Mybatis Plus提升CRUD效率(二)
一、MP 自动填充
应用场景
对于项目中的各个实体都具备公共字段,过去我们都是分别维护,如今可通过自动填充让业务实体只关注自身业务字段,无需处理公共字段的填充,由此可带来以下优势:
- 统一实体对象管理,简化实体结构
- 由MP统一处理,便捷的进行CRUD、主键生成及逻辑删除等操作
首先定义一个基础实体类BaseBO,里面包含主键、业务主键、创建人、创建时间等公共字段:
1 |
|
对其中的每个字段我们需要实现对应的自动填充功能,如创建人从请求头填入的ThreadLocal
获取填充、创建时间及更新时间生成、业务主键生成等,而利用MP我们可以轻松做到这一点。
填充原理
- 实现元对象处理器接口:com.baomidou.mybatisplus.core.handlers.MetaObjectHandler
业务实践
- 注解填充字段
@TableField(.. fill = FieldFill.INSERT)
其中枚举 FieldFill
可选值如下:
1 |
|
- 自定义实现类 MyMetaObjectHandler
1 |
|
至此,我们再使用业务实体继承BaseDO,使业务实体只需关注自身业务字段,无需处理公共字段,简单示例如下:
1 |
|
二、MP 代码生成器
适用版本:mybatis-plus-generator 3.5.1 及其以上版本
配置准备
- 基础Entity类 BaseDO
- 自动填充实现类 MyMetaObjectHandler
- 以下依赖引入
1 |
|
注意,此处使用了 Mybatis-plus-join 做联表增强,若只使用MP功能可不引入,对应在下述配置中修改对应BaseMapper、BaseService即可
自定义代码生成器实现
具体代码实现如下:
1 |
|
注:以上包含配置可参阅 代码生成器配置新 | MyBatis-Plus 进行自定义
Mybatis Plus提升CRUD效率(二)
http://dunkingcurry30.github.io/2023/07/09/Mybatis Plus提升CRUD效率(二)/