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 AOP的入门教程

    Spring AOP的入门教程

    Spring AOP是Spring框架的一个模块,本文主要介绍了Spring AOP的入门教程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-11-11
  • Java基础题新手练习(二)

    Java基础题新手练习(二)

    下面小编就为大家带来一篇Java基础的几道练习题(分享)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧,希望可以帮到你
    2021-07-07
  • Java虚拟机性能优化技巧和最佳实践分享

    Java虚拟机性能优化技巧和最佳实践分享

    Java虚拟机(JVM)是Java平台的核心组件,负责将Java字节码转换为机器码并执行,JVM性能直接影响Java应用的响应速度、吞吐量和资源利用率,本文将深入探讨JVM性能优化的关键技术和最佳实践,帮助开发者和运维人员提升Java应用性能,需要的朋友可以参考下
    2025-05-05
  • SpringBoot整合Spring Security过滤器链加载执行流程源码分析(最新推荐)

    SpringBoot整合Spring Security过滤器链加载执行流程源码分析(最新推荐)

    Spring Boot 对于 Spring Security 提供了自动化配置方案,可以使用更少的配置来使用 Spring Security,这篇文章主要介绍了SpringBoot整合Spring Security过滤器链加载执行流程源码分析,需要的朋友可以参考下
    2023-02-02
  • Java实现Twitter的分布式自增ID算法snowflake

    Java实现Twitter的分布式自增ID算法snowflake

    这篇文章主要介绍了Java实现Twitter的分布式自增ID算法snowflake,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • springboot集成nacos的配置方法

    springboot集成nacos的配置方法

    这篇文章主要介绍了springboot集成nacos的配置方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-03-03
  • idea导入module的正确实现方法

    idea导入module的正确实现方法

    文章介绍了在IntelliJ IDEA中正确导入Spring Cloud项目module的方法:通过File→New→Module from Existing Sources选择路径并点击OK,随后右击pom.xml添加为Maven项目,最后运行Maven Install生命周期完成编译,强调操作步骤的重要性,避免因失误导致问题
    2025-07-07
  • Java 定时任务技术趋势详情

    Java 定时任务技术趋势详情

    这篇文章主要介绍了Java 定时任务技术趋势详情,定时任务是每个业务常见的需求,比如每分钟扫描超时支付的订单,每小时清理一次数据库历史数据,每天统计前一天的数据并生成报表等,下文更多相关资料,需要的小伙伴可以参考一下
    2022-05-05
  • java能写爬虫程序吗

    java能写爬虫程序吗

    在本篇文章里小编给大家整理的是一篇关于java是否能写爬虫程序的一篇文章,对此有兴趣的朋友们可以学习下。
    2021-01-01
  • Spring Cache的基本使用与实现原理详解

    Spring Cache的基本使用与实现原理详解

    缓存是实际工作中非经常常使用的一种提高性能的方法, 我们会在很多场景下来使用缓存。下面这篇文章主要给大家介绍了关于Spring Cache的基本使用与实现原理的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2018-05-05

最新评论