MybatisPlus自动填充字段的操作

 更新时间:2026年01月14日 09:28:12   作者:小憨憨的牛  
文章介绍了使用MyBatis-Plus的`@TableField`注解和`MetaObjectHandler`接口实现数据库表中自动填充时间、用户信息等字段的功能,通过创建一个填充类来实现插入和更新操作时的自动填充

以自动填充时间为例

一般公司项目每个表都会有create_time,update_time,create_userCode,create_userName等字段,用来记录数据的基本信息。

mybatis-plus的TableField注解就很好的实现了这个功能,不需要每次存数据的时候给这几个字段赋值,而是自动填充。

1.数据库字段

2.实体类对应字段

 //增加实现
    @TableField(value = "create_time",fill = FieldFill.INSERT)
    private Date createTime;

    //增加或修改实现
    @TableField(value = "update_time",fill = FieldFill.INSERT_UPDATE)
    private Date updateTime;

@TableField注解

  • value:对应的数据库字段
  • fill: 填充模式(用于在插入和更新操作时自动填充字段的值 )

3.创建填充类 MyMetaObjectHandler

该类要实现MetaObjectHandler接口,并实现两个方法,一个记录保存操作,一个记录修改操作,在这两个方法里进行数据的填充。

/**
 * @Author dhp
 * @create 2025-02-24 15:35
 */
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
    @Override
    public void insertFill(MetaObject metaObject) {
        //根据名字设置属性值
        this.setFieldValByName("createTime",new Date(),metaObject);
        this.setFieldValByName("updateTime",new Date(),metaObject);
    }

    @Override
    public void updateFill(MetaObject metaObject) {
        this.setFieldValByName("updateTime",new Date(),metaObject);
    }
}

4.测试保存操作

  @Test
    void contextLoads() {

        User user = new User();
        user.setUserCode("123");
        user.setUserName("张三");
        user.setAddress("山东潍坊");
        user.setAge(25);
        //不进行手动赋值
//        user.setCreateTime(new Date());
//        user.setUpdateTime(new Date());
        userService.save(user);
    }

5.结果

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 快速了解hibernate配置文件与映射文件

    快速了解hibernate配置文件与映射文件

    这篇文章主要介绍了快速了解hibernate配置文件与映射文件,具有一定参考价值,需要的朋友可以了解下。
    2017-10-10
  • 全面解析@InsertProvider执行原理

    全面解析@InsertProvider执行原理

    这篇文章主要介绍了全面解析@InsertProvider执行原理,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07
  • SpringBoot中间件ORM框架实现案例详解(Mybatis)

    SpringBoot中间件ORM框架实现案例详解(Mybatis)

    这篇文章主要介绍了SpringBoot中间件ORM框架实现案例详解(Mybatis),本篇文章提炼出mybatis最经典、最精简、最核心的代码设计,来实现一个mini-mybatis,从而熟悉并掌握ORM框架的涉及实现,需要的朋友可以参考下
    2023-07-07
  • Java 设计模式以虹猫蓝兔的故事讲解简单工厂模式

    Java 设计模式以虹猫蓝兔的故事讲解简单工厂模式

    简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现
    2022-03-03
  • java实现简易局域网聊天功能

    java实现简易局域网聊天功能

    这篇文章主要为大家详细介绍了java实现简易局域网聊天功能,使用UDP模式编写一个聊天程序,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-04-04
  • Spring Cloud 部署时使用 Kubernetes 作为注册中心和配置中心的方法

    Spring Cloud 部署时使用 Kubernetes 作为注册中心和配置中

    Spring Cloud Kubernetes提供了使用Kubernete本地服务的Spring Cloud通用接口实现,这篇文章主要介绍了Spring Cloud 部署时如何使用 Kubernetes 作为注册中心和配置中心,需要的朋友可以参考下
    2024-05-05
  • java开发CPU流水线与指令乱序执行详解

    java开发CPU流水线与指令乱序执行详解

    这篇文章主要为大家介绍了java开发CPU流水线与指令乱序执行详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-09-09
  • idea中导入别人的springboot项目的方法(图文)

    idea中导入别人的springboot项目的方法(图文)

    这篇文章主要介绍了idea中导入别人的springboot项目的方法(图文),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • SpringBoot JSON全局日期格式转换器实现方式

    SpringBoot JSON全局日期格式转换器实现方式

    这篇文章主要介绍了SpringBoot JSON全局日期格式转换器,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-04-04
  • 有关于整体刷新和局部刷新frameset窗口

    有关于整体刷新和局部刷新frameset窗口

    本篇小编为大家介绍有关于整体刷新和局部刷新frameset窗口的方法,希望对有需要的朋友有所帮助。
    2013-04-04

最新评论