MybatisPlus实现时间字段自动添加及更新
-
引入MybatisPlus
-
在实体类中需要自动添加时间的字段使用@TableField注解,表示这个字段是在插入时填充的
@TableField(fill = FieldFill.INSERT) @ApiModelProperty(value = "留言时间") private Date createdDate;
-
FieldFill枚举类源码
public enum FieldFill { /** * 默认不处理 */ DEFAULT, /** * 插入时填充字段 */ INSERT, /** * 更新时填充字段 */ UPDATE, /** * 插入和更新时填充字段 */ INSERT_UPDATE }
-
添加MetaObjectHandler处理器,进行相关配置
@Bean public MetaObjectHandler metaObjectHandler() { return new MetaObjectHandler() { //自动添加 @Override public void insertFill(MetaObject metaObject) { //第二参数要和实体类中字段名一致,第三个参数字段类型要和实体类中字段类型一致,最后一个参数是待填入的数据 this.strictInsertFill(metaObject, "createdDate", Date.class, new Date()); } @Override public void updateFill(MetaObject metaObject) { this.strictUpdateFill(metaObject, "updatedDate", Date.class, new Date()); } }; }
-
this.strictInserFill()方法源码,各个参数也就一目了然了,更新或其他方法可以自己去看源码,这里就不介绍了
default <T, E extends T> MetaObjectHandler strictInsertFill(MetaObject metaObject, String fieldName, Class<T> fieldType, E fieldVal) { return this.strictInsertFill(this.findTableInfo(metaObject), metaObject, Collections.singletonList(StrictFill.of(fieldName, fieldType, fieldVal))); }
-
测试结果,执行添加操作时,即使不给时间字段传值,但是可以实现自动添加时间
参考文献
https://blog.csdn.net/gozhuyinglong/article/details/108733260