听说MyBatis-Plus可以实现自动填充,你会吗?

举报
bug菌 发表于 2023/10/11 17:37:27 2023/10/11
【摘要】 🏆本文收录于《Spring Boot从入门到精通》,专门攻坚指数提升,2023 年国内最系统+最强(更新中)。


🏆本文收录于《Spring Boot从入门到精通》,专门攻坚指数提升,2023 年国内最系统+最强(更新中)。

本专栏致力打造最硬核Spring Boot 系列教程,从零基础到进阶系列学习内容,🚀均为全网独家首发,打造精品专栏,专栏持续更新中…欢迎大家订阅持续学习。

环境说明:Windows10 + Idea2021.3.2 + Jdk1.8 + SpringBoot 2.3.1.RELEASE

前言

MyBatis-Plus是一个基于MyBatis的增强工具,在MyBatis的基础上,提供了许多高效实用的功能,其中就包括自动填充功能。自动填充功能可以在插入或更新记录时,自动填充一些字段的值,如创建时间和更新时间。本文将介绍MyBatis-Plus自动填充功能的实现方法。

摘要

本文将介绍MyBatis-Plus自动填充功能的实现方法,包括:

  • 自定义填充处理器
  • 添加自动填充字段及其属性
  • 配置自动填充处理器

正文

自定义填充处理器

自定义填充处理器需要实现MyMetaObjectHandler接口,并重写其方法。其中,有两个方法需要特别注意:

  • insertFill:在插入记录时调用,用于填充插入记录的字段值。
  • updateFill:在更新记录时调用,用于填充更新记录的字段值。

以创建时间和更新时间为例,代码如下:

@Component
public class MyMetaObjectHandler implements MetaObjectHandler {

    @Override
    public void insertFill(MetaObject metaObject) {
        // 设置创建时间和更新时间
        this.setFieldValByName("gmtCreate", new Date(), metaObject);
        this.setFieldValByName("gmtModified", new Date(), metaObject);
    }

    @Override
    public void updateFill(MetaObject metaObject) {
        // 设置更新时间
        this.setFieldValByName("gmtModified", new Date(), metaObject);
    }
}

添加自动填充字段及其属性

在实体类中添加自动填充字段及其属性,即在创建时间和更新时间字段上添加@TableField注解,并设置fill属性为FieldFill.INSERT或FieldFill.INSERT_UPDATE。

@Data
public class User {

    @TableId(type = IdType.AUTO)
    private Long id;

    @TableField(fill = FieldFill.INSERT)
    private Date gmtCreate;

    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Date gmtModified;

    private String name;

    private Integer age;
}

配置自动填充处理器

在MyBatis的配置文件中配置自动填充处理器,即在GlobalConfig中设置metaObjectHandler属性为自定义填充处理器的实例。

<bean id="globalConfig" class="com.baomidou.mybatisplus.core.config.GlobalConfig">
    <property name="metaObjectHandler" ref="myMetaObjectHandler"/>
</bean>

<bean id="myMetaObjectHandler" class="com.example.MyMetaObjectHandler"/>

至此,就完成了MyBatis-Plus自动填充功能的实现。

测试用例

在测试代码中插入一条记录,如下所示:

@Test
public void testInsert() {
    User user = new User();
    user.setName("张三");
    user.setAge(18);
    userMapper.insert(user);
    System.out.println(user.getId());
}

该记录的创建时间和更新时间字段将会被自动填充。

全文小结

本文介绍了MyBatis-Plus自动填充功能的实现方法,包括自定义填充处理器、添加自动填充字段及其属性、配置自动填充处理器。自动填充功能能够简化开发流程,提高开发效率,希望本文能对大家有所帮助。

附录源码

  如上涉及所有源码均已上传同步在「GitHub」,提供给同学们一对一参考学习,辅助你更迅速的掌握。

☀️建议/推荐你


无论你是计算机专业的学生,还是对编程有兴趣的小伙伴,都建议直接毫无顾忌的学习此专栏「滚雪球学Spring Boot」,从入门到精通,凡是学习此专栏的同学,均能获取到所需的知识和技能,全网最快速入门SpringBoot,就像滚雪球一样,越滚越大,指数级提升。

  最后,如果这篇文章对你有所帮助,帮忙给作者来个一键三连,关注、点赞、收藏,您的支持就是我坚持写作最大的动力。

  同时欢迎大家关注公众号:「猿圈奇妙屋」 ,以便学习更多同类型的技术文章,免费白嫖最新BAT互联网公司面试题、4000G pdf电子书籍、简历模板、技术文章Markdown文档等海量资料。

📣关于我

我是bug菌,CSDN | 掘金 | InfoQ | 51CTO 等社区博客专家,历届博客之星Top30,掘金年度人气作者Top40,51CTO年度博主Top12,华为云 | 阿里云| 腾讯云等社区优质创作者,全网粉丝合计15w+ ;硬核微信公众号「猿圈奇妙屋」,欢迎你的加入!免费白嫖最新BAT互联网公司面试题、4000G pdf电子书籍、简历模板等海量资料。


【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。