MetaObjectHandler的作用
MetaObjectHandler是mybatisPlus提供的一个属性的填充器。在mybatisPlus中我们一般像创建时间和修改时间等都会以注解的方式让其自动的更新我们的时间。例如:
@TableField(fill = FieldFill.INSERT)
private LocalDateTime createTime;
@TableField(fill = FieldFill.INSERT_UPDATE)
private LocalDateTime updateTime;
mybatisPlus提供了以下几种属性配置
1.实体的公共字段使用@TableField注解
- @TebleField(fill = FieldFill.INSERT):表示此字段只在插入/新增操作时更新数据
- @TebleField(fill = FieldFill.INSERT_UPDATE):表示此字段在修改和新增操作时都更新数据;
- @TebleField(fill = FieldFill.UPDATE):表示此字段只在修改操作时都更新数据;
我们则可以自己定义填充的属性,就是实现MetaObjectHandler接口,实现其中的方法insertFill,updateFill方法,一个是在插入时候触发一个是修改时候触发的。
@Component
public class IMetaObjectHandler implements MetaObjectHandler {
@Override
public void insertFill(MetaObject metaObject) {
log.info("start insert fill ....");
this.setInsertFieldValByName("deleted", false, metaObject);
this.setInsertFieldValByName("createTime", LocalDateTime.now(), metaObject);
this.setInsertFieldValByName("updateTime", LocalDateTime.now(), metaObject);
}
@Override
public void updateFill(MetaObject metaObject) {
log.info("start update fill ....");
this.setUpdateFieldValByName("updateTime", LocalDateTime.now(), metaObject);
}
}
这样我们就可以为某些需要获取默认值的字段进行赋值了。