为什么使用mybatisplus自动填充
在项目开发中,我们会发现有一些数据库表字段是每个表都有的,在之前针对这些字段我们的目前的处理方式就是 增加或者修改的时候一个一个的去赋值,如果都按这样的方法进行操作的话,那我们就需要在每个业务方法中进行操作,这样会显得我们的代码过于冗余、繁琐。
这个时候我们就可以使用Mybatis Plus提供的公共字段自动填充功能。
好处
原理:
1、实现元对象处理器接口:com.baomidou.mybatisplus.core.handlers.MetaObjectHandler
2、注解填充字段 @TableField(… fill = FieldFill.INSERT) 生成器策略部分也可以配置
public class User {
// 这里需要标记为填充字段
@TableField(.. fill = FieldFill.INSERT)
private String fillField;
}
3、自定义实现类 MyMetaObjectHandler
@Slf4j
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
@Override
public void insertFill(MetaObject metaObject) {
log.info("start insert fill ....");
this.strictInsertFill(metaObject, "createTime", LocalDateTime.class, LocalDateTime.now()); // 起始版本 3.3.0(推荐使用)
// 或者
this.strictInsertFill(metaObject, "createTime", () -> LocalDateTime.now(), LocalDateTime.class); // 起始版本 3.3.3(推荐)
// 或者
this.fillStrategy(metaObject, "createTime", LocalDateTime.now()); // 也可以使用(3.3.0 该方法有bug)
}
@Override
public void