1.字段添加注解
/**
* 创建时间
*/
@ApiModelProperty(value = "创建时间")
@TableField(fill = FieldFill.INSERT)//该注解表示在插入数据时开启自动生成
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date gmtCreate;//该字段名需要与拦截器中字段名一直
/**
* 修改时间
*/
@ApiModelProperty(value = "修改时间")
@TableField(fill = FieldFill.INSERT_UPDATE)//该注解表示在插入和修改数据时开启自动生成
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date gmtModified;//该字段名需要与拦截器中字段名一直
2.自定义MyMetaObjectHandler进行拦截赋值
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;
import java.util.Date;
/**
* @program:
* @description: 自动填充添加、修改时间
* @author: ID-Tang
* @create: 2021-12-15 10:57
**/
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
/**
* 插入时的填充策略
*
* @param metaObject Clinton Begin
*/
@Override
public void insertFill(MetaObject metaObject) {
// setFieldValByName(String fieldName, Object fieldVal, MetaObject metaObject
this.setFieldValByName("gmtCreate", new Date(), metaObject);
this.setFieldValByName("gmtModified", new Date(), metaObject);
}
/**
* 更新时的填充策略
*
* @param metaObject Clinton Begin
*/
@Override
public void updateFill(MetaObject metaObject) {
this.setFieldValByName("gmtModified", new Date(), metaObject);
}
}
3.常见问题
1.配置之后插入和修改时字段并未自动填充
这个问题出现的原因一般是字段名不一致,首先检查实体类中的字段名是否与数据库一致,然后再检查拦截器中的字段是否和实体类字段一致。