介绍
在数据库表中,通常会存在一些需要在插入或更新操作时自动填充的字段,比如记录创建时间和更新时间等。为了简化开发流程,MyBatis-Plus 提供了自动填充功能,可以在执行插入或更新操作时自动填充这些字段的值。
本文将介绍如何使用 MyBatis-Plus 实现自动填充功能,并在代码中演示示例。
步骤
-
编写自动填充处理器
首先,我们需要编写一个实现了 MyBatis-Plus 的 MetaObjectHandler 接口的自动填充处理器,用于在插入和更新操作时填充字段的值。以下是一个示例:
java@Slf4j @Component(value = "myMetaObjectHandler") @Primary public class MyMetaObjectHandler implements MetaObjectHandler { @Override public void insertFill(MetaObject metaObject) { log.info("start insert fill ...."); this.strictInsertFill(metaObject, "createTime", LocalDateTime.class, LocalDateTime.now()); 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()); } }
-
配置自动填充字段
在实体类中,使用
@TableField
注解并指定fill
属性为FieldFill.INSERT
或FieldFill.INSERT_UPDATE
,以指示需要自动填充的字段。同时,可以使用@JsonFormat
注解指定日期格式。@TableField(fill = FieldFill.INSERT) @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private LocalDateTime createTime; @TableField(fill = FieldFill.INSERT_UPDATE) @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private LocalDateTime updateTime;
-
执行插入操作
在插入操作时,调用
baseMapper.insert()
方法插入数据,自动填充的字段的值将会在插入时自动填充。
@Override
public void add(Student student) {
int b = baseMapper.insert(student);
if (b < 0) {
throw new IllegalArgumentException("参数错误");
}
}
结论
通过以上步骤,我们实现了使用 MyBatis-Plus 实现自动填充功能。在执行插入或更新操作时,无需手动设置填充字段的值,MyBatis-Plus 会自动填充这些字段的值,简化了开发流程,提高了开发效率。