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

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

    八、总结

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


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

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

  • 相关阅读:
    java-php-python-ssm-基于云端的小区物业智能管理系统-计算机毕业设计
    【Nginx29】Nginx学习:代理模块(三)缓冲区与Cookie处理
    PPOCR车牌定位模型推理后处理优化研究
    人工智能与电力:自动化、集中化和规模化的伦理挑战
    图形学线性代数
    Hive的独立安装
    玩转云端 | 天翼云电脑的百变玩法
    HTML网页设计结课作业——基于HTML+CSS仿学校官网页面
    Mybatis Available parameters are [0, 1, param1, param2]解决方法
    LangChain DeepAgents 学习笔记
  • 原文地址:https://www.cnblogs.com/wang1221/p/16635059.html