自动填充主要用于数据库操作中创建时间、修改时间。
常用的数据库填充方法有两个:
- 数据库级别
在表中新增字段create_time
、update_time
。
类型datatime
,默认值current_time
,在更新时✔️。
- 代码级别
在表中新增字段create_time
、update_time
。类型datatime
。
在实体类的字段属性上添加注解。
@ApiModelProperty(value = "创建时间")
@TableField(fill = FieldFill.INSERT)
private Date createTime;
@ApiModelProperty(value = "更新时间")
@TableField(fill = FieldFill.INSERT_UPDATE)
private Date updateTime;
编写处理器,重写MetaObjectHandler,处理注解。
package watt.gasleakage.handler;
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.util.Date;
/**
* @Author watt
* @Description 自动填充
* @Date 2021/1/21 9:36
*/
@Slf4j
@Component // 记得将处理器加到IOC容器中
public class MyMetaObjectHandler implements MetaObjectHandler {
// 插入时的填充策略
@Override
public void insertFill(MetaObject metaObject) {
log.info("start insert fill>>>>>>>>>");
// 字段名 插入值
this.setFieldValByName("createTime",new Date(),metaObject);
this.setFieldValByName("updateTime",new Date(),metaObject);
}
// 更新时的填充策略
@Override
public void updateFill(MetaObject metaObject) {
log.info("start insert fill>>>>>>>>>");
this.setFieldValByName("updateTime",new Date(),metaObject);
}
}