侧边栏壁纸
  • 累计撰写 49 篇文章
  • 累计创建 23 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

MyBatis-Plus 自动填充时间

阿砖
2024-05-25 / 0 评论 / 0 点赞 / 194 阅读 / 1924 字

MyBatis-Plus 是一个为了简化开发、提高效率而生的 MyBatis 增强工具。它为 MyBatis 提供了很多便利的功能,包括但不限于自动填充功能,可以在插入(Insert)或更新(Update)时自动设置实体类字段的值。

要实现自动填充时间字段,比如创建时间和更新时间,你可以使用 MyBatis-Plus 提供的 MetaObjectHandler 接口。以下是实现自动填充时间字段的步骤:

  1. 添加注解:在你的实体类字段上添加 @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 ...
}
  1. 实现 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(推荐使用)
    }
}
  1. 注册 MetaObjectHandler:如果你是使用 Spring Boot,通常情况下,@Component 注解会自动将 MyMetaObjectHandler 注册为 Spring Bean。MyBatis-Plus 会自动调用这个 Bean 来处理自动填充逻辑。

  1. 测试:进行插入或更新操作时,MyBatis-Plus 将会自动调用 MetaObjectHandler 中定义的逻辑,为标记了 @TableField 注解的字段自动填充当前时间。

确保你的 MyBatis-Plus 版本与代码中使用的 API 相匹配,因为不同版本可能会有所变化。以上代码是基于 MyBatis-Plus 3.x 版本的,如果你使用的是其他版本,请查阅相应版本的文档。

0

评论区