Bootstrap

MyBatis-Plus(MP)2025/2/15

小蓝鸟。

约定大于配置。

只做增强不做改变,不影响现有工程。(相对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.

 

通用分页实体 

通用分页实体与MP转换

;