-
分享一个小技巧——mysql统一处理创建时间和更新时间
- 网站名称:分享一个小技巧——mysql统一处理创建时间和更新时间
- 网站分类:技术文章
- 收录时间:2025-06-30 16:10
- 网站地址:
“分享一个小技巧——mysql统一处理创建时间和更新时间” 网站介绍
背景
mysql数据库表设计的时候,通常都会有这两个字段————创建时间和更新时间,创建时间即mysql记录第一次插入的时间,更新时间即mysql记录发生更新时的时间。通常的做法都是先创建对象,然后分别对创建时间和更新时间进行赋值,然后再去做持久化操作。那有没有统一处理的方式呢?有,还非常简单。快跟小编一起来看看吧!
优缺点
通常使用一个东西的时候,我们都要知道它优缺点,分享干货之前,我们先来是说下统一处理创建时间和更新时间的优缺点吧
优点
- 统一处理,在一定程度上减少了代码的冗长,代码看起来干净整洁
- 统一处理,因为不用去每次操作对象,对创建时间和更新时间字段进行赋值操作,在一定程度上减少了逻辑,使开发人员可以更专注于业务开发
- 使用简单,统一配置后,支持使用注解
缺点
所有的数据库表的创建时间和更新时间字段都要使用统一的字段名称。
原理
我们使用的是mybatisPlus为我们提供的的一个扩展接口MetaObjectHandler,可以利用这个接口在我们插入或者更新数据的时候,给创建时间和更新时间字段设置为当前的系统时间。需要重写insertFill和updateFill两个方法即可。
搭建
引入相关pom依赖
<!--mybatis-plus-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.1</version>
</dependency>
<!--mysql驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<!--druid连接池-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.22</version>
</dependency>
定义时间填充器handler
/**
* @desc:时间填充器
* @author:liyajie
* @createTime:2021/12/25 18:23
* @version:1.0
*/
@Component
@Slf4j
public class MyMetaObjectHandler implements MetaObjectHandler {
@Override
public void insertFill(MetaObject metaObject) {
log.info("start insert fill...");
this.setFieldValByName("createDate", new Date(), metaObject);
this.setFieldValByName("updateDate", new Date(), metaObject);
}
@Override
public void updateFill(MetaObject metaObject) {
log.info("start update fill...");
this.setFieldValByName("updateDate", new Date(), metaObject);
}
}
编写测试案例
分别编写controller,service,dao就可以了,大家都会,这里我就省略不写 。。。。
测试
新增一个王五,我们传入的报文只有id和name,我们的时间填充器会自动把创建时间和更新时间给填上
更新下王五的信息,我们的时间填充器会自动把更新时间给更新
注意点
如果持久化对象的创建时间和更新时间传了值,最终会以传的值为准
结束
如需获取源码,请关注后,私信小编,非常感谢
更多相关网站
- MySQL 数据库恢复:如何执行时间点恢复(PITR)以挽救受损数据?
- 如何正确查询mysql的启动和关闭时间?
- 您对MySQL常用内置日期时间函数认识多少?
- mysql备份脚本:自己设定用户名密码及数据保留时间
- 阿里二面:最讨厌的问题来了,MySQL 保存日期用哪种数据类型?
- mysql——日期操作
- spring + mysql, 日期年份大于9999带来的灾难
- 牛哇!MySQL中的日志“binlog”的三种格式这么好玩
- MySQL 中时间函数详解,及加减计算总结和使用!
- MySQL计算两个日期(两个时间)相差的天数、月数、年数
- Mysql日期格式化显示“年月”
- MySQL 保存日期,用哪种数据类型合适
- 最近发表
- 标签列表
-
- mydisktest_v298 (35)
- sql 日期比较 (33)
- document.appendchild (35)
- 头像打包下载 (35)
- acmecadconverter_8.52绿色版 (25)
- 梦幻诛仙表情包 (36)
- java面试宝典2019pdf (26)
- disk++ (30)
- 加密与解密第四版pdf (29)
- iteye (26)
- centos7.4下载 (32)
- intouch2014r2sp1永久授权 (33)
- jdk1.8.0_191下载 (27)
- axure9注册码 (30)
- virtualdrivemaster (26)
- 数据结构c语言版严蔚敏pdf (25)
- 兔兔工程量计算软件下载 (27)
- 代码整洁之道 pdf (26)
- ccproxy破解版 (31)
- aida64模板 (28)
- engine=innodb (33)
- shiro jwt (28)
- segoe ui是什么字体 (27)
- head first java电子版 (32)
- clickhouse中文文档 (28)