1.先说场景,在对mysql数据库表数据插入或者更新时都得记录时间和用户id

传统实现有点繁琐,这里还可以封装一下公共方法。
2.解决方法:
2.1:使用aop切面编程(记录一下,有时间再攻克)。
2.2:使用@TableField()注解。
3.我使用的@TableField 注解实现,因为没有很多的业务处理,单纯的记录一下,以下是具体实现
 
 @Component
public class MyMetaObjectHandler implements MetaObjectHandler {
    @Override
    public void insertFill(MetaObject metaObject) {
        // 在插入时自动填充 create_time 和 update_time 字段
        this.strictInsertFill(metaObject, "createTime", Date.class, new Date());
        this.strictInsertFill(metaObject, "createBy", String.class, BaseUtlis.getCurrentUser().getId());
    }
    @Override
    public void updateFill(MetaObject metaObject) {
        // 在更新时自动填充 update_time 字段
        this.strictUpdateFill(metaObject, "updateTime",Date.class, new Date());
        this.strictInsertFill(metaObject, "updateBy", String.class, BaseUtlis.getCurrentUser().getId());
    }
}
 
  
 
注: 字段需要跟实体类对应起来,我项目架构是使用了驼峰命名使用下划线后字母大写。BaseUtlis.getCurrentUser().getId(),这个是我封装的一个获取当前登录用户的方法。
参数解析:
this.strictUpdateFill(metaObject, "updateTime",Date.class, new Date());
metaObject:对象
updateTime:实体类目标字段
Date.class:数据类型
new Date():具体值
4.yml配置
 
 mybatis-plus:
  global-config:
    db-config:
      meta-object-handler: com.zuodou.mymeta.MyMetaObjectHandler 
 
5.在对应实体类的字段上加
@TableField(fill = FieldFill.UPDATE)
或者
@TableField(fill = FieldFill.INSERT)
(侵权联系删除)



















