1.需求分析
对于数据库中的表一般都有字段创建时间和更新时间,这两个时间为了方便我需要要做的就是在数据库中的发生修改的时候自动更新update_time,在插入数据的时候自动填充create_time
2.方法
(1)在mybatisplus中就提供了自动填充功能
https://www.baomidou.com/pages/4c6bcf/
(2)改造
基于上述做出改造,在创建的时候也插入更新时间
修改之后的代码如下
package com.xiaoxin.Country.common;
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;
import java.time.LocalDateTime;
@Slf4j
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
@Override
public void insertFill(MetaObject metaObject) {
log.info("start insert fill ....");
this.strictInsertFill(metaObject, "createTime", LocalDateTime.class, LocalDateTime.now()); // 起始版本 3.3.0(推荐使用)
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()); // 起始版本 3.3.0(推荐)
}
}
(3)在实体类中加上@TableField注解
@TableField注解也可以用于自动填充字段值。通过设置fill属性,可以指定字段在插入或更新时是否需要自动填充,默认是FieldFill.DEFAULT,你可以根据需要设置为FieldFill.INSERT或FieldFill.UPDATE。
在我的代码中给实体类加上注解代码
@ApiModelProperty("用户创建时间")
@Alias("用户创建时间")
@TableField(fill = FieldFill.INSERT)
@JsonDeserialize(using = LDTConfig.CmzLdtDeSerializer.class)
@JsonSerialize(using = LDTConfig.CmzLdtSerializer.class)
private LocalDateTime createTime;
// 用户更新时间
@ApiModelProperty("用户更新时间")
@Alias("用户更新时间")
@TableField(fill = FieldFill.INSERT_UPDATE)
@JsonDeserialize(using = LDTConfig.CmzLdtDeSerializer.class)
@JsonSerialize(using = LDTConfig.CmzLdtSerializer.class)
private LocalDateTime updateTime;
(4)效果
通过上述操作之后在我的项目中,通过注册创建的一个用户九已经自动填充了