mysql自动填充时间的两种实现方式小结

 更新时间:2022年11月30日 11:41:40   作者:liudachu  
这篇文章主要介绍了mysql自动填充时间的两种实现方式小结,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

mysql自动填充时间的两种方式

mysql建表的时候有两个列,一个是createtime、另一个是updatetime

  • 当插入一条数据,createtime列和updatetime列由数据库获取当前时间自动创建时间
  • 当修改一条记录时,updatetime列由数据库获取按当前时间自动更新时间

方法一:数据库级别

(工作中不允许你修改数据库),一般我们采用方法二

1.在表中新增字段 create_time, update_time,记得同步实体类

2.设置createtime、updatetime的默认值为CURRENT_TIMESTAMP

3.设置updatetime列属性ON UPDATE CURRENT_TIMESTAMP


在这里插入图片描述

方式二:代码级别

(使用mybatis_plus自动填充策略实现)

1、删除数据库的默认值、更新操作!


在这里插入图片描述

2、实体类字段属性上需要增加注解

// 字段添加填充内容
@TableField(fill = FieldFill.INSERT)
private Date createTime;
@TableField(fill = FieldFill.INSERT_UPDATE)
private Date updateTime;

3、编写处理器来处理这个注解即可!即配置填充策略

import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;
import java.util.Date;
@Slf4j
@Component // 一定不要忘记把处理器加到IOC容器中!
public class MyMetaObjectHandler implements MetaObjectHandler {
    // 插入时的填充策略
    @Override
    public void insertFill(MetaObject metaObject) {
        log.info("start insert fill.....");
        // setFieldValByName(String fieldName, Object fieldVal,MetaObjectmetaObject
        // 最新的MP可以采用这个方法:this.strictInsertFill(metaObject, "createTime", Date.class, new Date());
        this.setFieldValByName("createTime",new Date(),metaObject);
        this.setFieldValByName("updateTime",new Date(),metaObject);
    }
    // 更新时的填充策略
    @Override
    public void updateFill(MetaObject metaObject) {
        log.info("start update fill.....");
        this.setFieldValByName("updateTime",new Date(),metaObject);
    }
}

4、测试插入

5、测试更新、观察时间即可!

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

相关文章

  • Mysql存储json格式的实现

    Mysql存储json格式的实现

    本文主要介绍了Mysql存储json格式的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06
  • 一文读懂MySQL 表分区

    一文读懂MySQL 表分区

    MySQL自带了分区功能,我们可以创建一个带有分区的表,而且不需要借助任何外部工具,本文主要了介绍了MySQL表分区,具有一定的参考价值,感兴趣的小伙伴们可以参考一下<BR>
    2022-03-03
  • 一次Mysql死锁排查过程的全纪录

    一次Mysql死锁排查过程的全纪录

    在测试环境测试给用户并发发送卡券时,出现了死锁,通过查找相关的资料解决了这个,所以想着总结出来,所以下面这篇文章主要是关于一次Mysql死锁排查过程的全纪录,需要的朋友可以参考下,希望大家从中能有所帮助。
    2017-02-02
  • mysql 模糊查询 concat()的用法详解

    mysql 模糊查询 concat()的用法详解

    大家都知道concat()函数,是用来连接字符串,今天通过本文给大家介绍mysql 模糊查询 concat()及concat的用法,感兴趣的朋友跟随小编一起看看吧
    2023-02-02
  • Windows实现通过cmd命令行启动mysql

    Windows实现通过cmd命令行启动mysql

    介绍了通过Windows命令行启动MySQL的详细步骤,包括普通启动和使用管理员权限的方法,以及如何登录和查询数据,主要步骤包括修改环境变量、使用net start命令、确保以管理员身份运行CMD,以及使用MySQL命令行工具进行数据库操作
    2024-10-10
  • MySQL六种约束的示例详解(全网最全)

    MySQL六种约束的示例详解(全网最全)

    约束是作用于表中字段上的规则,用于限制存储在表中的数据。这篇文章主要为大家整理了一下MySQL中六种约束的用法,感兴趣的可以了解一下
    2022-07-07
  • MySQL 查看链接及杀掉异常链接的方法

    MySQL 查看链接及杀掉异常链接的方法

    这篇文章主要介绍了MySQL 查看链接及杀掉异常链接的方法,帮助大家更好的理解和使用Java,感兴趣的朋友可以了解下
    2021-02-02
  • MySQL中如何进行SQL调优举例详解

    MySQL中如何进行SQL调优举例详解

    这篇文章主要介绍了SQL调优的几种方法,包括合理设计索引,避免SELECT*,避免在SQL中进行函数计算等操作,避免使用%LIKE,注意联合索引需满足最左匹配原则,不要对无索引字段进行排序操作,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2025-01-01
  • mysql 5.7.17 winx64安装配置图文教程

    mysql 5.7.17 winx64安装配置图文教程

    这篇文章主要为大家分享了mysql 5.7.17 winx64安装配置方法图文教程,感兴趣的朋友可以参考一下
    2017-01-01
  • MySQL分区之LIST分区详解

    MySQL分区之LIST分区详解

    mysql分区之LIST分区讲解 MySQL中的LIST分区在很多方面类似于RANGE分区,下面这篇文章主要给大家介绍了关于MySQL分区之LIST分区的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2022-04-04

最新评论