• 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"
    }
    

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

    八、总结

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


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

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

  • 相关阅读:
    鞋帽箱包经营小程序商城的作用是什么
    【推荐】javaweb JAVA JSP家政服务管理系统服务网站jsp服务信息管理jsp保姆月嫂招聘系统案例设计与实现源码
    html、css
    Worthington果胶酶的特性及测定方案
    C++ 之多态(一)
    排列组合算法
    More effective C++:条款3.绝对不要以多态方式处理数组及条款4:非必要不提供default construcor
    vue3 props传值默认类型
    android开发获取View坐标位置的几种方式
    【招招制敌】修改element-ui中el-image 预览图大小的默认尺寸,让展示效果更加有呼吸感
  • 原文地址:https://www.cnblogs.com/wang1221/p/16635059.html