Mybatis-plus 进行 last_update_time 更新

380 阅读1分钟

背景: 数据库中有 creation_date, last_update_date
需求: 该时间字段由MybatisPlus自动插入和更新,业务代码无需处理

方法:

一、创建基础实体【BaseEntity】,定义需要处理的公共字段(创建时间、修改时间、创建人、修改人、备注……),供其他业务实体类继承

 @Data
 public class BaseEntity implements Serializable {
 
     @TableField(value = "d_create_time", fill = FieldFill.INSERT)
     private Date createTime;
 
     @TableField(value = "d_update_time", fill = FieldFill.INSERT_UPDATE)
     private Date updateTime;
 
 }

二、创建元数据处理器【MetaHandler】,继承自MetaObjectHandler

  /**
  * 处理新增和更新的基础数据填充,配合BaseEntity和MyBatisPlusConfig使用
  **/
 @Component
 public class MetaHandler extends MetaObjectHandler {
 
     /**
      * 新增数据执行
      */
     @Override
     public void insertFill(MetaObject metaObject) {
         this.setFieldValByName("createTime", new Date(), metaObject);
         this.setFieldValByName("updateTime", new Date(), metaObject);
     }
 
     /**
      * 更新数据执行
      */
     @Override
     public void updateFill(MetaObject metaObject) {
         this.setFieldValByName("updateTime", new Date(), metaObject);
     }
 
 }

三、创建配置文件【MybatisPlusConfig】,全局注入元数据处理器

 @Configuration
 public class MyBatisPlusConfig {
     /**
      * 自动填充功能      
      */
     @Bean
     public GlobalConfig globalConfig() {
         GlobalConfig globalConfig = new GlobalConfig();
         globalConfig.setMetaObjectHandler(new MetaHandler());
         return globalConfig;
     }
 }

四、实体类 继承 公共字段信息 实体类创建或者更新,会默认加载 基础数据填充 无需代码额外处理

 @Data
 @Accessors(chain = true)
 @TableName("t_web_news")
 public class News extends BaseEntity {
 
     /**
      * 自增ID
      */
     @TableId(value = "n_id", type = IdType.AUTO)
     private Integer id;
     /**
      * 内容
      */
     @TableField("c_area")
     private String area;
     /**
      * 封面
      */
     @TableField("c_cover")
     private String cover;
     /**
      * 上下架默认0:1:下架;2:上架
      */
     @TableField("n_stand")
     private Integer stand;
     /**
      * 标题
      */
     @TableField("c_title")
     private String title;
 
     @TableField("n_type")
     private Integer type;
 
 }

重新启动。 完成 基础数据的默认加载操作。完成 last_update_date 时间填充。