有时我们希望在更新数据的时候,自动完成某些字段的值的填充,如创建一个实体的时候,自动生成创建时间,更新的时候自动改变更新时间等。
- 在指定字段标注注解,生成器策略部分也可以配置。
// 创建时间
@TableField(fill = FieldFill.INSERT)
private Date createTime;
// 更新时间
@TableField(fill = FieldFill.INSERT_UPDATE)
private Date updateTime;
public enum FieldFill {
/**
* 默认不处理
*/
DEFAULT,/**
* 插入填充字段
*/
INSERT,/**
* 更新填充字段
*/
UPDATE,/**
* 插入和更新填充字段
*/
INSERT_UPDATE
}
- 实现元对象处理接口:
com.baomidou.mybatisplus.core.handlers.MetaObjectHandler
@Slf4j
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
// fieldName 指的是实体类的属性名,而不是数据库的字段名
@Override
public void insertFill(MetaObject metaObject) {
log.info("start insert fill ....");
this.strictInsertFill(
metaObject,"createTime",LocalDateTime.class,LocalDateTime.now());
this.strictInsertFill(
metaObject,"updateTime",LocalDateTime.now());
}
@Override
public void updateFill(MetaObject metaObject) {
log.info("start update fill ....");
this.strictUpdateFill(
// 起始版本 3.3.0(推荐)
metaObject,LocalDateTime.now());
// 或者
this.strictUpdateFill(
// 起始版本 3.3.3(推荐)
metaObject,LocalDateTime::now,LocalDateTime.class);
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。