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

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

数据库字段设置:

`valid_verify_time` datetime DEFAULT NULL COMMENT '有效性审核时间',

实体类设置:

@JsonSerialize:序列化

@JsonDeserialize:反序列化

LocalDateTimeSerializer:JDK时间序列化规则

    @ApiModelProperty(value = "有效性审核时间")
    @TableField(fill = FieldFill.UPDATE, update = "now()")
    @JsonSerialize(using = LocalDateTimeSerializer.class)
    @JsonDeserialize(using = LocalDateTimeDeserializer.class)
    private LocalDateTime validVerifyTime;

打印出来的SQL

mybatisplus自动填充值:完成自动填充更新时间和创造时间,以及坑

一般实体类最后都会带有createTime和updateTime但我希望让它是自动更新的,由于mybatisplus的sql是看不到的, 但又不想自己重写sql。于是解决方法来了!用它自带的字段自动填充功能!

实体类:

@Data
@TableName("mmall_user")
public class User {
    @TableId
    private int id;
    private String username;
    private String password;
    private String email;
    private String phone;
    private String question;
    private String answer;
    private int role;
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
}

这个是自增策略,我希望createTime只是在插入的时候会自动赋值,而updateTime是插入和更新的时候自动赋值一共是有一下几种:

已经自定义了自动填充的触发情况,下面应该定义自动填充的策略了

1.

创建如图所示的类

代码如下:

@Component
@Slf4j
public class MyMetaObjectHandler implements MetaObjectHandler {
    @Override
    public void insertFill(MetaObject metaObject) {
    log.info("start insert field....");
    this.setFieldValByName("createTime", LocalDateTime.now(),metaObject);
    this.setFieldValByName("updateTime", LocalDateTime.now(),metaObject);
    }

    @Override
    public void updateFill(MetaObject metaObject) {
        this.setFieldValByName("updateTime", LocalDateTime.now(),metaObject);
    }
}

第一个是字段name,第二个是value,第三个照着写

用了LocalDateTime实体类字段类型也要用LocalTime类型

我这里用的:

用String是无法填充的!类型不匹配

这张图是数据库类型和java类型对应关系。

当然你的数据库这里用timestamp和datetime都是可以的

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

(0)

相关推荐

  • Mybatisplus自动填充实现方式及代码示例

    数据库表的创建时间.修改时间,这些个操作一遍都是自动化完成的,我们不希望手动更新.这时候自动填充便可以发挥作用了. 1.方式一 数据库级别(注意:不建议此方式,因为工作中不允许你修改数据库) 步骤 在表中新增字段create_time, update_time,给字段赋予默认值,在需要更新的字段(update_time)选择更新 在实体类增加对应属性 2.方式二 代码级别,建议使用 步骤 在实体类需要自动填充的属性上加注解 package com.yl.bean; import com.baom

  • SpringBoot Mybatis Plus公共字段自动填充功能

    一.应用场景 平时在建对象表的时候都会有最后修改时间,最后修改人这两个字段,对于这些大部分表都有的字段,每次在新增和修改的时候都要考虑到这几个字段有没有传进去,很麻烦.mybatisPlus有一个很好的解决方案.也就是公共字段自动填充的功能.一般满足下面条件的字段就可以使用此功能: 这个字段是大部分表都会有的. 这个字段的值是固定的,或则字段值是可以在后台动态获取的. 常用的就是last_update_time,last_update_name这两个字段. 二.配置MybatisPlus 导包:

  • mybatis-plus 通用字段自动化(如逻辑删除和更新时间等)

    一般来说某些项目比较规范的情况下,大多数表都会有逻辑删除字段和通用字段,例如更新时间,创建时间,更新人,创建人等等,但是在代码开发上会产生很多冗余的代码,逻辑删除的话,自己写比较繁琐,而且容易有遗漏逻辑. 本来打算自己写切面去实现,偶然发现mybatis-plus已经帮封装实现了,试了一下,很好用,所以分享一下. 逻辑删除 逻辑删除的意思就是某些业务表,在用户删除某条数据的时候,不真正删除,而是将此数据某字段改成类似"已删除",而查询语句.更新语句等会忽略此条被逻辑删除的数据. 这里就

  • Mybatis-Plus自动填充的实现示例

    在常用业务中有些属性需要配置一些默认值,MyBatis-Plus提供了实现此功能的插件.在这里修改user表添加 create_time 字段和 update_time 字段,在User类中添加对应属性. 1.为需要自动填充的属性添加注解 @TableField 提供了4种自动填充策略:DEFAULT,默认不处理.INSERT,插入填充字段.UPDATE,更新填充字段.INSERT_UPDATE,插入和更新填充字段. @Data public class User { private Long

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

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

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

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

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

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

  • mybatis-plus 新增/修改如何实现自动填充指定字段

    目录 mybatis-plus 新增/修改 自动填充指定字段 1.需要修改的字段在模型类上添加 2.新建一个MetaObjectHandler的实现类 通用字段自动填充的最佳实践总结 一.调整数据库表结构 二.通用维护信息父类-自动赋值的字段 三.实体类的实现 四.自动赋值的规则 五.实现效果 mybatis-plus 新增/修改 自动填充指定字段 1.需要修改的字段在模型类上添加 @TableField(fill = FieldFill.xxx) 注解. FieldFill的选项: 哪个字段在

  • mybatis自动填充时间字段示例代码

    前言 对于实体中的created_on和updated_on来说,它没有必要被开发人员去干预,因为它已经足够说明使用场景了,即在插入数据和更新数据时,记录当前时间,这对于mybatis来说,通过拦截器是可以实现的,记得之前说过在jpa中实现的方法,主要通过jpa的注解实现的,因为今天的mybatis需要用到java的拦截器. 下面话不多说了,来一起看看详细的介绍吧 定义两个注解 @Retention(RetentionPolicy.RUNTIME) @Target( {ElementType.F

  • Spring Boot 集成 Mybatis Plus 自动填充字段的实例详解

    一般在表设计的时候,都会在表中添加一些系统字段,比如 create_time.update_time等. 阿里巴巴开发手册中也有这样的提示,如果对于这些公共字段可以进行统一处理,不需要每次进行插入或者更新操作的时候 set 一下,就可以提高开发效率,解放双手. 加入依赖 下面就通过 MyBatis Plus 来完成字段自动填充,首先加入 MyBatis Plus 依赖: <dependency>     <groupId>com.baomidou</groupId>  

  • 使用Mybatis-plus实现时间自动填充(代码直接可用)

    目录 一. 搭建基础项目 二. 设置自动填充 一. 搭建基础项目 引入依赖 <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!--lombok 依赖--> <dependency>

  • Android实现自动填充短信验证码

    本文实例为大家分享了Android自动填充短信验证码的具体代码,供大家参考,具体内容如下 短信验证码是大部分软件里面都存在的功能,同时为了避免用户自己输入导致的繁琐操作,有一部分app设计者将其设置成了自动填充的方式,方便用户操作那么这种方式是什么实现的呢. 利用广播接收器来拦截短信获取其中匹配的内容,提供回掉,将短信内容暴露到activity中实现自动填充 首先我们要实现一个广播接收器 package com.wquant.weilt.reciver; import java.util.reg

  • spring jpa 审计功能自定义填充字段方式

    目录 spring jpa 审计功能自定义填充字段 有两种方式 具体步骤 启用Spring Data JPA审计功能 JPA Audit 说明 如何使用审计功能 1.编写AuditorAware 2.在实体类中声明@EntityListeners和相应的注解 3.在Application 中启用审计@EnableJpaAuditing spring jpa 审计功能自定义填充字段 spring data jpa 通过@CreateBy等注解实现了审计功能(在新建或者修改的时候自动填充某些字段)

随机推荐