MybatisPlus自动填充创建(更新)时间问题

 更新时间:2024年09月22日 09:55:37   作者:Java王小怪  
在开发数据库相关应用时,手动设置创建和更新时间会导致代码冗余,MybatisPlus提供了自动填充功能,通过实现MetaObjectHandler接口并重写insertFill、updateFill方法,可以自动维护创建时间、更新时间等字段,极大简化了代码,这不仅提高了开发效率,也保证了数据的可追溯性

MybatisPlus自动填充创建(更新)时间

在大多数情况下,我们在创建数据库时都会加上创建、更新时间这些字段,为了保证数据的可追溯性,当然肯定还是有操作日志记录表用来做追溯记录。

开发中每一次的创建更新都需要手动去设置这一次操作的时间,会有很多的代码冗余。

  `create_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '创建时间',
  `create_user` bigint DEFAULT NULL COMMENT '创建人',
  `update_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  `update_user` bigint DEFAULT NULL COMMENT '更新人',
  `status` tinyint DEFAULT '1' COMMENT '状态(备用)',
  `is_deleted` tinyint DEFAULT '0' COMMENT '逻辑删除

这个时候,有没有一种方法可以帮我们自动维护这些字段呢?

在这里的话,不得不提到MybatisPlus的功能强大了。MybatisPlus有一个扩展功能:自动填充。

此功能常见的应用场景为,插入数据的时候自动添加创建时间、创建人、修改时间、修改人、删除标记。

通过实现MetaObjectHandler接口,重写insertFillupdateFill方法,当我们插入和修改数据的时候可以自动添加指定字段的值,这些不就是我们想要的效果吗?

话不多说,上代码!

一、实现MetaObjectHandler

@Component
public class MybatisHandler implements MetaObjectHandler {
	@Override
	public void insertFill(MetaObject metaObject) {
		//属性名
		this.setFieldValByName("createTime", new Date(), metaObject);
		//this.setFieldValByName("createUser", SecureUtil.getUserId(), metaObject);
        //不维护create_user可以不使用这行代码
	}

	@Override
	public void updateFill(MetaObject metaObject) {
		//属性名
		this.setFieldValByName("updateTime", new Date(), metaObject);
		//this.setFieldValByName("updateUser", SecureUtil.getUserId(), metaObject);
	}
}

二、使用注解

    /**
	 * 进行新增或者更新操作时
	 * Mybatis自动进行维护时间
	 */
	@TableField(fill= FieldFill.INSERT)
	private Long createUser;

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

	@TableField(fill=FieldFill.UPDATE)
	private Long updateUser;

	@TableField(fill=FieldFill.UPDATE)
	private Date updateTime;

这样就可以做到自动维护更新、创建时间啦!

总结

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

相关文章

  • Spring中ResponseBodyAdvice的使用详解

    Spring中ResponseBodyAdvice的使用详解

    这篇文章主要介绍了Spring中ResponseBodyAdvice的使用,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-10-10
  • idea插件之mybatis log plugin控制台sql的问题

    idea插件之mybatis log plugin控制台sql的问题

    这篇文章主要介绍了idea插件之mybatis log plugin控制台sql,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-09-09
  • Spring boot中filter类不能注入@Autowired变量问题

    Spring boot中filter类不能注入@Autowired变量问题

    这篇文章主要介绍了Spring boot中filter类不能注入@Autowired变量问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09
  • Java中JSON字符串反序列化(动态泛型)

    Java中JSON字符串反序列化(动态泛型)

    文章讨论了在定时任务中使用反射调用目标对象时处理动态参数的问题,通过将方法参数存储为JSON字符串并进行反序列化,可以实现动态调用,然而,这种方式容易导致内存溢出(OOM),这篇文章主要介绍了JSON字符串反序列化 动态泛型,需要的朋友可以参考下
    2024-12-12
  • SpringBoot配置的加载流程详细分析

    SpringBoot配置的加载流程详细分析

    了解内部原理是为了帮助我们做扩展,同时也是验证了一个人的学习能力,如果你想让自己的职业道路更上一层楼,这些底层的东西你是必须要会的,这篇文章主要介绍了SpringBoot配置的加载流程
    2023-01-01
  • java动态规划算法——硬币找零问题实例分析

    java动态规划算法——硬币找零问题实例分析

    这篇文章主要介绍了java动态规划算法——硬币找零问题,结合实例形式分析了java动态规划算法——硬币找零问题相关原理、实现方法与操作注意事项,需要的朋友可以参考下
    2020-05-05
  • logback 实现给变量指定默认值

    logback 实现给变量指定默认值

    这篇文章主要介绍了logback 实现给变量指定默认值操作,具有很好的参考家价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • Thymeleaf对象的使用之基本对象实例解析

    Thymeleaf对象的使用之基本对象实例解析

    这篇文章主要介绍了Thymeleaf对象的使用之基本对象实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04
  • 浅谈Java操作符与其优先级

    浅谈Java操作符与其优先级

    这篇文章主要介绍了浅谈Java操作符与其优先级,具有一定借鉴价值,需要的朋友可以了解下。
    2017-12-12
  • 公共POI导出Excel方法详解

    公共POI导出Excel方法详解

    这篇文章主要介绍了公共POI导出Excel方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-05-05

最新评论