MyBatis-Plus
2021-04-22 20:29:17 36 举报
AI智能生成
MyBatis-Plus的基本入门使用,还有几个插件的使用示例
作者其他创作
大纲/内容
MyBatis-Plus
官网
https://mp.baomidou.com/
快速入门
https://mp.baomidou.com/guide/
本质
就是mybatis的升级,只是在mybatis的基础上做了提升,支持完全的向下兼容
这个图可以很好的解释
开始入门Demo
导入依赖
pre style=\
只导入这一个依赖,不要再导入mybatis了,避免版本冲突
连接数据库
导入mysql依赖
配置application.properties
编写pojo类
编写mapper接口
BaseMapper
在主启动类上扫描mapper接口
开启mybatis-plus的日志
配置application.properties配置文件
# 开启日志输出mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
测试一波
测试代码
QueryWrapper
QueryWrapper是mybatis-plus自带的条件查询器,我们可以使用这个QueryWrapper来构造查询条件
eq(\"数据库列名\
要求某行的该列值和传入的值完全相等才能查出来
like(\"数据库列名\
要求某行的该列值包含传入的值才能查出来
le(\"数据库列名\
要求某行的该列值小于等于传入的值才能查出来
ge(\"数据库列名\
要求某行的该列值大于等于传入的值才能查出来
测试结果
mybatis-plus会帮我们自动生成简单的sql并拼接,对于单表操作可以说很友好了,但是对于多表联查还是需要自己手动写的
主键自增
数据库明明设置了主键自增,为什么添加数据的时候却给了一串很长的随机数呢?
其实这是mybatis-plus帮我们生成的主键id,采用的是twitter的雪花算法,用毫秒数、机器编号等参数形成的唯一id
我们想要变成我们想要的1,2,3,4,5这种简单的自增也很简单,添加一个注解就好了
乐观锁
简介
当要更新一条记录的时候,希望这条记录没有被别人更新
乐观锁实现方式
取出记录时,获取当前version
更新时,带上这个version
执行更新时, set version = newVersion where version = oldVersion
如果version不对,就更新失败
实际操作一下
实体类中需要在相对应得字段上添加@Version注解
编写配置类(来自官网)
测试乐观锁
普通情况下(单线程操作)
结果
多线程情况下
时间戳
阿里巴巴Java开发手册上明确表示了数据库建表的时候必须要有创建时间(gmt_create)、修改时间(gmt_modified)字段
我们来实际使用一下
数据库建表加上这两个字段,并且类型设置timestamp
创建时间
默认时现在操作的时间,并且不再更新
修改时间
默认是现在的操作时间,并且会因为数据更新而更新时间戳
上面的操作在数据库中操作以及完全可以玩的来了,但是实际开发我却发现更新不生效
所以我查了很多资料,发现解决方式有两种,一种是加注解,一种是加注解和配置类
既然一个注解可以解决的事情,我为什么还要加配置类呢?完事收工
分页查询
我们首先想到的应该是学过的limit关键字,在数据库层面实现分页查询
现在我们使用mybatis-plus自带的分页插件来实现分页查询
简单的Page实现
代码
效果
一共三条记录,现在显示页面大小为1,第二页的记录
逻辑删除
之前写逻辑删除的时候每次写sql都要手动拼接is_delete = 0,现在mybatis-plus帮我们封装好了
逻辑删除字段添加注解
配置拦截器
application.properties配置文件里配置逻辑删除的代号
开始测试
先执行删除操作
再次查询发现已经查不到了
我们可以通过navicat看到实际上只是更改了is_delete的值,并没有真的删除
性能分析插件
性能分析插件就是记录每条sql执行的时间,超时就会停止运行
导入插件,注册组件
这个很常用,可以有效找到慢查询
自动代码生成
AutoGenerator类
可能报错
导入依赖即可
源码
0 条评论
下一页