MyBatis-Plus 是一个为了简化开发、提高效率而生的 MyBatis 增强工具。它为 MyBatis 提供了很多便利的功能,包括但不限于自动填充功能,可以在插入(Insert)或更新(Update)时自动设置实体类字段的值。
要实现自动填充时间字段,比如创建时间和更新时间,你可以使用 MyBatis-Plus 提供的 MetaObjectHandler 接口。以下是实现自动填充时间字段的步骤:
添加注解:在你的实体类字段上添加 @TableField 注解,并使用 fill 属性来指定在什么操作时自动填充该字段。例如:
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableLogic;
import java.util.Date;
public class YourEntity {
// ... 其他字段 ...
@TableField(fill = FieldFill.INSERT)
private Date createTime;
@TableField(fill = FieldFill.UPDATE)
private Date updateTime;
// ... getter 和 setter ...
}
实现 MetaObjectHandler:创建一个类实现 MetaObjectHandler 接口,并重写 insertFill 和 updateFill 方法来自定义字段的填充策略。
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;
import java.util.Date;
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
@Override
public void insertFill(MetaObject metaObject) {
this.strictInsertFill(metaObject, "createTime", Date.class, new Date()); // 起始版本 3.3.0(推荐使用)
}
@Override
public void updateFill(MetaObject metaObject) {
this.strictUpdateFill(metaObject, "updateTime", Date.class, new Date()); // 起始版本 3.3.0(推荐使用)
}
}
注册 MetaObjectHandler:如果你是使用 Spring Boot,通常情况下,@Component 注解会自动将 MyMetaObjectHandler 注册为 Spring Bean。MyBatis-Plus 会自动调用这个 Bean 来处理自动填充逻辑。
测试:进行插入或更新操作时,MyBatis-Plus 将会自动调用 MetaObjectHandler 中定义的逻辑,为标记了 @TableField 注解的字段自动填充当前时间。
确保你的 MyBatis-Plus 版本与代码中使用的 API 相匹配,因为不同版本可能会有所变化。以上代码是基于 MyBatis-Plus 3.x 版本的,如果你使用的是其他版本,请查阅相应版本的文档。
评论区