优秀的Mybatis-plus又来了,这次将体验创建时间更新时间的自动填充功能,

记得在阿里巴巴开发手册中提到一个规范,id,create_time,update_time为必备字段。

添加一个测试表,几个简单的字段,主要重点在于datetime类型的新的字段 create_time、update_time

阅读这篇博客时不需要你手动测试案例,因为这东西官方已经有文档介绍,我只是将过程展示一遍。

值得注意的是:一般更新时间是需要初始化,所以我们一般会在insertFill中也加入更新时间的配置。

我的测试表结构如下:

创建SpringBoot项目,引入Lombok和Mysql,MP,相关依赖。

实体类如下

@Data
public class Test {
    @TableId(type= IdType.AUTO)
    private Integer id;
    private String name;
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
}

重点在于@TableField注解,可以让该字段完成自动填充功能,下图是FieldFill枚举类的几个参数。

接下来配置一个组件类,实现MetaObjectHandler接口

这一块在官方介绍的比较清楚。

注意事项:

  • 字段必须声明TableField注解,属性fill选择对应策略,该声明告知Mybatis-Plus需要预留注入SQL字段
  • 填充处理器MyMetaObjectHandler在 SpringBoot 中需要声明@Component@Bean注入
  • 要想根据注解FieldFill.xxx字段名以及字段类型来区分必须使用父类的strictInsertFill或者strictUpdateFill方法
  • 不需要根据任何来区分可以使用父类的fillStrategy方法

下面我进行测试,由于Test命名冲突了,这点也怪我,没考虑好,但是问题不大,我们照常测试。

我们可以看到基本实现了时间上的自动填充。


Last modification:June 25, 2020
如果觉得我的文章对你有用,请随意赞赏