小蓝鸟。
约定大于配置。
只做增强不做改变,不影响现有工程。(相对Mybatis小红鸟)
MyBatis-Plus 帮助文档:简介 | MyBatis-Plus
MyBatis-Plus快速入门
pom文件里引入MyBatis-Plus依赖,代替MyBatis依赖。
自定义Mapper接口继承BaseMapper接口。
BaseMapper接口给我们提供了一堆写好的crud方法,直接引用就不用自己手写了。
泛型是操作实体类的类型,这里是user。
MP获取数据库信息的原理
MyBatisPlus通过扫描实体类,并基于反射获取实体类信息作为数据库表信息。
约定大于配置。
自定义配置
如果主键id没有指定自增加auto,默认id使用雪花算法。
MP自定义配置
有了MP的starter起步依赖就可以使用MP,同时MP也支持自定义配置。
MP核心功能
条件构造器
MP支持各种复杂的where条件,可以满足日常开发的所有需求。
自定义SQL
可以利用MyBatisPlus的Wrapper来构建复杂的where条件,然后自己定义SQL语句中剩下的部分。
Service接口
继承IService,Service的增删改查代码也不用自己写了。
总结:自定义接口UserService需要去继承IService接口,(MP不仅给我们提供了接口IService,还给我们提供了Service默认的实现类叫ServiceImpl已经实现了IService接口了)实现类UserServiceImpl需要去继承实现类ServiceImpl。
IService开发基础业务功能接口
(MP接口练习)
MybatisPlus-08.核心功能-IService开发基础业务接口_哔哩哔哩_bilibili
MybatisPlus-09.核心功能-IService开发复杂业务接口_哔哩哔哩_bilibili
MybatisPlus-10.核心功能-IService的Lambda方法_哔哩哔哩_bilibili
MybatisPlus-11.核心功能-IService的批量新增_哔哩哔哩_bilibili
MP的扩展功能
代码生成
基本格式
生成上面类似的代码,可以使用MyBatisX快速代码插件(idea)
DB静态工具
方便,避免循环依赖。
为什么用DB这个工具:多个service之间相互调,如果采用传统的autowire注入方式,(两个)service相互注入就会产生循环依赖。建议一旦出现service相互调用,建议使用db静态工具调用。db工具的方法和service里的方法基本一样。
逻辑删除
不是真正的删除一个东西,而是基于逻辑判断的方式模拟删除效果。
逻辑删除就是基于代码逻辑模拟删除效果,但不会真正删除数据,思路如下图:
所以这种操作不是delete,而是update更新某个标记字段的取值。以后的where查询里要有标记字段为0的条件,只需要修改application文件配置删除的字段名称和值,就可以自动修改了。假如该字段叫flag:
坏处:会导致数据库的垃圾越来越多。
枚举处理器
枚举类型和数据库字段之间的相互转换。
下图就需要进行这样的转换,数据库里的status数据类型是int的,而枚举类型是UserStatus。
Mybatis里的TypeHandler就实现了java数据类型和数据库类型之间的转换。但是这里我们用的是另一种方法。
首先加注解@EnumValue。
第二步:
VO里类型变量,PO里也要变类型,从Interger变成UserStatus,方便以后拷贝。
@JsonValue加到哪里就返回哪个,这个返回的就是正常或冻结,不加返回Normal或Frozen。
JSON处理器
解决数据库中Json数据类型和java类型之间的转换。
json类型在java中一般用String类型接收。
如果要取json里单独信息,要转换成对象,很麻烦。
使用自带接口。
1.给字段定义处理器。
2.开启map自动映射。
MP的插件功能
分页插件
1.配置
2.使用分页Api
3.