原理:是直接给
entity
的属性设置值!!!
1:在实体类中设置
//字段添加填充类容
@TableField(fill = FieldFill.INSERT) //插入的时候填充
private LocalDateTime createTime;
//update = "now()"加了乐观锁之后防止自动填充失败的
@TableField(fill = FieldFill.INSERT_UPDATE,update = "now()") //更新的时候填充(最开始是没有数据的,所以用INSERT_UPDATE),
private LocalDateTime updateTime;
2:设置处理器
//元数据处理接口,处理创建时间和更新时间
@Slf4j
@Component
public class MybatisTimeConfig implements MetaObjectHandler {
@Override
public void insertFill(MetaObject metaObject) {
log.info("start insert fill ....");
this.strictInsertFill(metaObject, "createTime", LocalDateTime.class, LocalDateTime.now());
this.strictInsertFill(metaObject, "updateTime", LocalDateTime.class, LocalDateTime.now());
}
@Override
public void updateFill(MetaObject metaObject) {
log.info("start update fill ....");
this.strictUpdateFill(metaObject, "updateTime", LocalDateTime.class, LocalDateTime.now());
}
}
测试: