当前位置:首页>科技>mysql修改一天数据中的时间分享一个小技巧
发布时间:2026-07-21阅读(1)
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>
/** * @desc:时间填充器 * @author:liyajie * @createTime:2021/12/25 18:23 * @version:1.0 */@Component@Slf4jpublic 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,我们的时间填充器会自动把创建时间和更新时间给填上


更新下王五的信息,我们的时间填充器会自动把更新时间给更新


如果持久化对象的创建时间和更新时间传了值,最终会以传的值为准
结束如需获取源码,请关注后,私信小编,非常感谢
Copyright © 2024 有趣生活 All Rights Reserve吉ICP备19000289号-5 TXT地图HTML地图XML地图