公共字段的填充
为了解决数据库中公共字段的在每一个业务方法中都需要操作,编码相对冗余,繁琐。对这种公共字段能不能进行统一的处理呢?
答案是可以的,我们可以使用**Mybatis Plus**提供的**公共字段自动填充**功能。
Mybatis Plus公共字段自动填充,也就是在插入或者更新的时候为指定字段赋予指定的值,使用它的好处就是可以统一对这些字段进行处理,避免了重复代码。
实现步骤
在需要填充的实体类的属性上加入@TableField注解,指定自动填充的策略
@TableField(fill = FieldFill.INSERT)
private LocalDateTime createTime;
@TableField(fill = FieldFill.INSERT_UPDATE)
private LocalDateTime updateTime;
填充策略有四种,根据自己实际的业务需求使用。
public enum FieldFill {
DEFAULT,
INSERT,
UPDATE,
INSERT_UPDATE;
private FieldFill() {
}
}
按照框架的要求编写元数据对象处理器,在该类中统一的给公共字段赋值,该类需要实现MetaObjectHandler接口,并重写其中的insertfill() 和 updateFill() 方法。填充字段时需要使用到metaObject对象中的setValue方法。
@Override
public void insertFill(MetaObject metaObject) {
metaObject.setValue("createTime", LocalDateTime.now());
metaObject.setValue("updateTime", LocalDateTime.now());
metaObject.setValue("createUser", BaseContext.getId());
metaObject.setValue("updateUser", BaseContext.getId());
}