MyBatisPlus使用@TableField注解处理默认填充时间的问题

目录
  • 使用@TableField注解处理默认填充时间的情况
  • 1.利用数据库填写默认时间
  • 2.使用自动填充默认填充插入或更新数据库时
    • 给实体类的属性添加@TableField注解
    • 测试
    • 测试成功的结果状态
    • 类型设置

使用@TableField注解处理默认填充时间的情况

在数据库的表中创建时间,修改时间!这些个操作一般都是自动化完成的,我们不希望手动更新。

阿里巴巴开发手册:所有的数据库表:gmt_create,gmt_modified几乎所有的表都要配置上!而且需要自动化!

1.利用数据库填写默认时间

在表中新增字段create_time,update_time,给这个字段设置一个current_timestamp时间戳,这样默认值就是当前时间,但是mysql版本如果过低的话是不支持current_timestamp关键字的

如下图:

2.使用自动填充默认填充插入或更新数据库时

表中牵涉到的时间 编写处理器类

首先需要编写一个处理器,如下图:

注意上面的处理器一定要加上@Component注解表示把此处理器注入到IOC容器中。SpringBoot中无论是处理器包handler还是配置包config都需要把里面的类加上@Component注解表示把类注入到IOC容器中,要不然处理器和配置类不会生效。

给实体类的属性添加@TableField注解

其次要在对应的实体类上的属性上加上@TableField注解

如下图:

测试

最后写一个单元测试,测试更新或者插入的时候能否实现createTime和updateTime的自动填充操作

如下图:

测试成功的结果状态

数据库中的字段类型要设置成是datetime,添加成功后的数据格式

如下图:

类型设置

数据库中的表中的时间字段create_time和update_time设置成datetime类型,User实体中的createTime和updateTime和处理器中的new Date()所有的时间类型用java.util.Date包中的Date类型。

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

(0)

相关推荐

  • 在MyBatisPlus中使用@TableField完成字段自动填充的操作

    场景 官方文档: 字段注解 @TableField com.baomidou.mybatisplus.annotations.TableField 值 描述 value 字段值(驼峰命名方式,该值可无) update 预处理 set 字段自定义注入 condition 预处理 WHERE 实体条件自定义运算规则 el 详看注释说明 exist 是否为数据库表字段( 默认 true 存在,false 不存在 ) strategy 字段验证 ( 默认 非 null 判断,查看 com.baomido

  • 对Mybatis Plus中@TableField的使用正解

    目录 @TableField的使用 1 研究背景和过程 2 总结 2.1 别名效果 value属性 2.2 防止字段持久化 exist属性 @TableField的作用 @TableField(exist = false) @TableField的使用 1 研究背景和过程 妹纸开发突然发现@TableField失效了,在群里发问.一了解,发现妹纸本意是想用@TabkeField达到类似@JsonProperty的功能.也就是当实体类属性名与数据库列名不一致时,通过此注解实现别名效果. 奇怪的是,

  • Mybatis-plus使用注解 @TableField(exist = false)

    当表中午字段,但是实体类中需要这个成员变量时怎么办,可以使用mybatis-plus中@TableField(exist=false) 如下: import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableLogic; import com.baomi

  • MybatisPlus中@TableField注解的使用详解

    实现 官方文档说明: com.baomidou.mybatisplus.annotations.TableField TableField注解新增属性 update 预处理 set 字段自定义注入 (讲解:比如我们使用mybatisplus自带的insert()方法向数据库插入数据时,假设我们给age字段赋值为1,但是我们在age字段上的@TableField注解里面加了update="%s+1",那么真真插入到数据库的值就是age=2,而不是age+1了) 例如: @TableFie

  • MyBatisPlus使用@TableField注解处理默认填充时间的问题

    目录 使用@TableField注解处理默认填充时间的情况 1.利用数据库填写默认时间 2.使用自动填充默认填充插入或更新数据库时 给实体类的属性添加@TableField注解 测试 测试成功的结果状态 类型设置 使用@TableField注解处理默认填充时间的情况 在数据库的表中创建时间,修改时间!这些个操作一般都是自动化完成的,我们不希望手动更新. 阿里巴巴开发手册:所有的数据库表:gmt_create,gmt_modified几乎所有的表都要配置上!而且需要自动化! 1.利用数据库填写默认

  • Mybatis-Plus使用@TableField实现自动填充日期的代码示例

    目录 一.前言 二.导入maven依赖 三.创建实体类 四.自定义实现类 MyMetaObjectHandler 五.Controller测试 六.测试添加 七.测试更新 八.总结 一.前言 我们在日常开发中经常使用ORM框架,比如Mybatis.tk.Mybatis.Mybatis-Plus.不过最广泛的还是Mybatis-Plus,我们的一些表,都会有创建时间.更新时间.创建人.更新人.这些我们每次都要自己手动set吃力不讨好,所以Mybatis-Plus带来了自动填充,今天小编带大家一起学

  • MyBatis-Plus 修改和添加自动填充时间方式

    MyBatis-Plus 修改和添加自动填充时间 数据库字段设置: `valid_verify_time` datetime DEFAULT NULL COMMENT '有效性审核时间', 实体类设置: @JsonSerialize:序列化 @JsonDeserialize:反序列化 LocalDateTimeSerializer:JDK时间序列化规则 @ApiModelProperty(value = "有效性审核时间") @TableField(fill = FieldFill.U

  • mybatis-plus的自动填充时间的问题(添加到数据库的时间比当前时间多4个小时)

    当前时间  sql语句  添加到数据库的时间 先把打印的sql语句放到数据库里面去执行 发现添加的时间是对的 不断找 2个小时终于发现问题所在了 连接数据库时时区要写对 我之前写的  useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC 纠正后   autoReconnect=true&useUnicode=true&characterEncoding=utf8&serv

  • mybatis plus框架@TableField注解不生效问题及解决方案

    目录 一.问题描述 二.解决方案 三.关于@TableField注解失效原因的思考 四.Mapper接口LambdaQuery方法调用过程梳理 1.Mapper接口调用实际上使用的是动态代理技术 2.mybatisplus对查询的单独处理 3.findOne实际上还是要查询List 4.mybatis接口上下文信息MappedStatement 5.mybatisplus别名自动设置的逻辑 6.mybatisplus的sql日志打印 7.最终查询的执行 8.结果集处理 9.每一条数据的单独处理

  • MyBatis-Plus逻辑删除和字段自动填充的实现

    目录 一.ID生成策略 1.使用@TableId注解 2.全局ID生成策略 二.逻辑删除 1.全局配置 2.使用@TableLogic注解 三.字段自动填充 1.指定字段自动填充 2.自定义MetaObjectHandler 3.测试 四.执行SQL分析打印 1.添加 spy.properties配置文件 2.修改数据源配置 3.测试查询 一.ID生成策略 1.使用@TableId注解 @TableId注解:主键注解 使用位置:实体类主键字段. @Data @ToString @TableNam

  • Mybatis-Plus实体类注解方法与mapper层和service层的CRUD方法

    目录 1 注解 1.1 @TableName 1.2 @TableId 1.3 @TableField 1.4 @TableLogic 2 mapper层的CRUD方法 2.1 增(insert) 2.2 删(delete) 2.3 改(update) 2.4 查(select) 3 service层的CRUD方法 3.1 批量添加或者更新 3.2 查询表中总记录数 1 注解 1.1 @TableName   之前在入门案例中我们分析过:使用mp底层方法生成的SQL语句中,表名为mapper或者

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

    目录 mysql自动填充时间的两种方式 方法一:数据库级别 方式二:代码级别 mysql自动填充时间的两种方式 mysql建表的时候有两个列,一个是createtime.另一个是updatetime 当插入一条数据,createtime列和updatetime列由数据库获取当前时间自动创建时间 当修改一条记录时,updatetime列由数据库获取按当前时间自动更新时间 方法一:数据库级别 (工作中不允许你修改数据库),一般我们采用方法二 1.在表中新增字段 create_time, update

随机推荐