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类型。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。
相关推荐
-
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完成字段自动填充的操作
场景 官方文档: 字段注解 @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的功能.也就是当实体类属性名与数据库列名不一致时,通过此注解实现别名效果. 奇怪的是,
-
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
随机推荐
- JavaScript正则表达式上之基本语法(推荐)
- vue中mint-ui环境搭建详细介绍
- Lua中table里内嵌table的例子
- js控制分页打印、打印分页示例
- centos 6.5下修改SSH端口及禁用root远程登录的方法
- Oracle密码文件的使用和维护第1/3页
- Python实现批量将word转html并将html内容发布至网站的方法
- 微信禁止下拉查看URL的处理方法
- js判断某个字符出现的次数的简单实例
- PHP下获取上个月、下个月、本月的日期(strtotime,date)
- php基础之连接mysql数据库和查询数据
- Javascript 5种方法实现过滤删除前后所有空格
- python实现颜色空间转换程序(Tkinter)
- php流量统计功能的实现代码
- 对Jquery中的ajax再封装,简化操作示例
- MySQL中基本的用户和权限管理方法小结
- Java中一维二维数组的静态和动态初始化
- 浅谈java中==以及equals方法的用法
- Android微信SDK实现分享
- iOS下Safari点击事件失效的解决方法