Mybatis-Plus使用@TableField实现自动填充日期

打印 上一主题 下一主题

主题 899|帖子 899|积分 2697

一、前言

我们在日常开发中经常使用ORM框架,比如Mybatis、tk.Mybatis、Mybatis-Plus。不过最广泛的还是Mybatis-Plus,我们的一些表,都会有创建时间、更新时间、创建人、更新人。这些我们每次都要自己手动set吃力不讨好,所以Mybatis-Plus带来了自动填充,今天小编带大家一起学习一下,本次以填充日期为例哈!!学到的小伙伴记得一键三连哦~~
二、导入maven依赖
  1. <dependency>
  2.      <groupId>com.baomidou</groupId>
  3.      <artifactId>mybatis-plus-boot-starter</artifactId>
  4.      <version>3.5.1</version>
  5. </dependency>
复制代码
三、创建实体类
  1. @Data
  2. public class Test implements Serializable {
  3.     private static final long serialVersionUID = 337361630075002456L;
  4.     @TableId(type= IdType.ASSIGN_ID)
  5.     private long id;
  6.     private String name;
  7.     private String gender;
  8.    
  9.     private String phone;
  10.        
  11.     @TableField(value = "create_date",fill = FieldFill.INSERT)
  12.     private LocalDateTime createDate;
  13.     @TableField(value = "update_date",fill = FieldFill.UPDATE)
  14.     private LocalDateTime updateDate;
  15. }
复制代码
四、自定义实现类 MyMetaObjectHandler
  1. @Slf4j
  2. @Component
  3. public class MyMetaObjectHandler implements MetaObjectHandler {
  4.     @Override
  5.     public void insertFill(MetaObject metaObject) {
  6.         log.info("start insert fill ....");
  7.         this.strictInsertFill(metaObject, "createDate", LocalDateTime.class, LocalDateTime.now());
  8.     }
  9.     @Override
  10.     public void updateFill(MetaObject metaObject) {
  11.         log.info("start update fill ....");
  12.         this.strictUpdateFill(metaObject, "updateDate", LocalDateTime.class, LocalDateTime.now());
  13.     }
  14. }
复制代码
五、Controller测试
  1. @RestController
  2. @RequestMapping("/test")
  3. @Slf4j
  4. @RequiredArgsConstructor
  5. public class TestController {
  6.     @NonNull
  7.     private TestMapper testMapper;
  8.     @GetMapping("/insert")
  9.     public Result insert(@RequestBody Test test){
  10.         testMapper.insert(test);
  11.         return Result.success("插入成功");
  12.     }
  13.     @PutMapping("/update")
  14.     public Result update(@RequestBody Test test){
  15.         testMapper.updateById(test);
  16.         return Result.success("插入成功");
  17.     }
  18. }
复制代码
友情提示:
这个@RequiredArgsConstructor注解不明白的看我这篇文章哦!---> @RequiredArgsConstructor注解
六、测试添加

请求地址:localhost:8089/test/insert
请求内容:
  1. {
  2.     "name":"王",
  3.     "gender":"男",
  4.     "phone":"123"
  5. }
复制代码


我们可以看到没有输入日期,自动创建了哈!!
七、测试更新

请求地址:localhost:8089/test/update
请求内容:
  1. {
  2.         "id":14,
  3.     "name":"王",
  4.     "gender":"男",
  5.     "phone":"123"
  6. }
复制代码


此时我们看到更新也是可以自动填充的!!
八、总结

总的来说还是比较方便的,减轻开发的工作量,代码更加优雅哈!
特别提醒:自动填充的类型要和实体类的类型一致,不然不会填充哈!!
喜欢小编的记得关注一波哦!!
有缘人才可以看得到的哦!!!点击访问!小编自己的网站,里面也是有很多好的文章哦!

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

民工心事

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表