前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Mybatis-Plus时间自动填充

Mybatis-Plus时间自动填充

作者头像
乐心湖
发布2020-07-31 15:38:10
1.1K0
发布2020-07-31 15:38:10
举报
文章被收录于专栏:MyTechnologyMyTechnology

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

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

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

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

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

我的测试表结构如下:

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

实体类如下

代码语言:javascript
复制
@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命名冲突了,这点也怪我,没考虑好,但是问题不大,我们照常测试。

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档