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


    一、前言

    我们在日常开发中经常使用ORM框架,比如Mybatis、tk.Mybatis、Mybatis-Plus。不过最广泛的还是Mybatis-Plus,我们的一些表,都会有创建时间、更新时间、创建人、更新人。这些我们每次都要自己手动set吃力不讨好,所以Mybatis-Plus带来了自动填充,今天小编带大家一起学习一下,本次以填充日期为例哈!!学到的小伙伴记得一键三连哦~~

    二、导入maven依赖

    <dependency>
         <groupId>com.baomidougroupId>
         <artifactId>mybatis-plus-boot-starterartifactId>
         <version>3.5.1version>
     dependency>
    

    三、创建实体类

    @Data
    public class Test implements Serializable {
        private static final long serialVersionUID = 337361630075002456L;
    
        @TableId(type= IdType.ASSIGN_ID)
        private long id;
    
        private String name;
    
        private String gender;
        
        private String phone;
    	
        @TableField(value = "create_date",fill = FieldFill.INSERT)
        private LocalDateTime createDate;
    
        @TableField(value = "update_date",fill = FieldFill.UPDATE)
        private LocalDateTime updateDate;
    
    }
    

    四、自定义实现类 MyMetaObjectHandler

    @Slf4j
    @Component
    public class MyMetaObjectHandler implements MetaObjectHandler {
    
        @Override
        public void insertFill(MetaObject metaObject) {
            log.info("start insert fill ....");
            this.strictInsertFill(metaObject, "createDate", LocalDateTime.class, LocalDateTime.now());
        }
    
        @Override
        public void updateFill(MetaObject metaObject) {
            log.info("start update fill ....");
            this.strictUpdateFill(metaObject, "updateDate", LocalDateTime.class, LocalDateTime.now());
        }
    }
    

    五、Controller测试

    @RestController
    @RequestMapping("/test")
    @Slf4j
    @RequiredArgsConstructor
    public class TestController {
    
        @NonNull
        private TestMapper testMapper;
    
        @GetMapping("/insert")
        public Result insert(@RequestBody Test test){
            testMapper.insert(test);
            return Result.success("插入成功");
        }
    
        @PutMapping("/update")
        public Result update(@RequestBody Test test){
            testMapper.updateById(test);
            return Result.success("插入成功");
        }
    }
    

    友情提示
    这个@RequiredArgsConstructor注解不明白的看我这篇文章哦!---> @RequiredArgsConstructor注解

    六、测试添加

    请求地址:localhost:8089/test/insert
    请求内容:

    { 
        "name":"王",
        "gender":"男",
        "phone":"123"
    }
    

    在这里插入图片描述
    在这里插入图片描述
    我们可以看到没有输入日期,自动创建了哈!!

    七、测试更新

    请求地址:localhost:8089/test/update
    请求内容:

    { 
    	"id":14,
        "name":"王",
        "gender":"男",
        "phone":"123"
    }
    

    在这里插入图片描述
    在这里插入图片描述
    此时我们看到更新也是可以自动填充的!!

    八、总结

    总的来说还是比较方便的,减轻开发的工作量,代码更加优雅哈!
    特别提醒:自动填充的类型要和实体类的类型一致,不然不会填充哈!!
    喜欢小编的记得关注一波哦!!


    有缘人才可以看得到的哦!!!

    点击访问!小编自己的网站,里面也是有很多好的文章哦!

  • 相关阅读:
    聊聊powerjob的执行机器地址
    java实现幂等性校验
    【Java面试】ConcurrentHashMap再JDK7和8中的区别以及ConcurrentHashMap底层实现
    在macOS上实现多进程任务处理
    java 函数式接口与Lambda表达式
    用React仿钉钉审批流
    Postman简单使用
    Ubuntu18.04使用RPLIDAR A2M12雷达出错的解决办法
    Java_笔记_StringBuilder的基本操作_链式编程
    H.迷宫,(算法选修)
  • 原文地址:https://www.cnblogs.com/wang1221/p/16635059.html