MyBatisPlus 自动填充演示
一、数据库
表中新增“添加时间”和“修改时间”字段;
二、实体类 Entity
在实体类中的“添加时间”和“修改时间”的属性字段中添加 @TableField(fill = FieldFill.INSERT),其中 FieldFill 中包含默认(DEFAULT), 插入(INSERT), 修改(UPDATE), 插入和修改(INSERT_UPDATE)你可以点进源码进行查看;
1 public class EduTeacher implements Serializable {
2
3 //注意!这里需要标记为填充字段
4 @TableField(fill = FieldFill.INSERT)
5 @ApiModelProperty(value = "创建时间")
6 private Date gmtCreate;
7
8 @TableField(fill = FieldFill.INSERT_UPDATE)
9 @ApiModelProperty(value = "更新时间")
10 private Date gmtModified;
11
12 }
三、 公共类
采用AOP的思想,实现 MetaObjectHandler接口,并实现其中的 insertFill 和 updateFill 方法,如下:
1 import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
2 import org.apache.ibatis.reflection.MetaObject;
3 import org.springframework.stereotype.Component;
4
5 import java.util.Date;
6
7 /**
8 * @description:
9 * @author: zzx
10 * @createDate: 2020/6/1
11 * @version: 1.0
12 */
13 @Slf4j
14 @Component
15 public class MyMetaObjectHandler implements MetaObjectHandler {
16 @Override
17 public void insertFill(MetaObject metaObject) {
18 log.info("start insert fill ....");
19 //属性名称,不是字段名称
20 this.strictInsertFill(metaObject, "gmtCreate", LocalDateTime.class, LocalDateTime.now()); // 起始版本 3.3.0(推荐使用)
21 //this.fillStrategy(metaObject, "gmtCreate", LocalDateTime.now()); // 也可以使用(3.3.0 该方法有bug请升级到之后的版本如`3.3.1.8-SNAPSHOT`)
22 /* 上面选其一使用,下面的已过时(注意 strictInsertFill 有多个方法,详细查看源码) */
23 //this.setFieldValByName("gmtCreate",new Date(),metaObject);
24 //this.setFieldValByName("gmtModified",new Date(),metaObject);
25 }
26
27 @Override
28 public void updateFill(MetaObject metaObject) {
29 log.info("start update fill ....");
30 this.strictUpdateFill(metaObject, "gmtModified", LocalDateTime.class, LocalDateTime.now()); // 起始版本 3.3.0(推荐使用)
31 //this.fillStrategy(metaObject, "gmtModified", LocalDateTime.now()); // 也可以使用(3.3.0 该方法有bug请升级到之后的版本如`3.3.1.8-SNAPSHOT`)
32 /* 上面选其一使用,下面的已过时(注意 strictUpdateFill 有多个方法,详细查看源码) */
33 //this.setUpdateFieldValByName("gmtModified", LocalDateTime.now(), metaObject);
34 //this.setFieldValByName("gmtModified",new Date(),metaObject);
35 }
36 }
注意事项:
【1】字段必须声明TableField注解,属性fill选择对应策略,该声明告知 Mybatis-Plus需要预留注入SQL字段;
【2】填充处理器 MyMetaObjectHandler在 Spring Boot 中需要声明 @Component或 @Bean注入;
【3】要想根据注解 FieldFill.xxx和字段名以及字段类型来区分必须使用父类的 strictInsertFill或者 strictUpdateFill方法;
【4】不需要根据任何来区分可以使用父类的 fillStrategy方法 ;
四、MyBatisPlus 依赖(一般项目中都有,你可能不需要)
1 <!--mybatis-plus-->
2 <dependency>
3 <groupId>com.baomidou</groupId>
4 <artifactId>mybatis-plus-boot-starter</artifactId>
5 <scope>provided </scope>
6 </dependency>
五、测试
【1】测试请求
【2】数据库结果

MyBatisPlus 自动填充演示的更多相关文章
- MybatisPlus自动填充公共字段的策略
背景:数据库中多个表有时间字段,并且字段名一致 需求:该时间字段由MybatisPlus自动插入和更新,业务代码无需处理 方法: 一.创建基础实体[BaseEntity],定义需要处理的公共字段(创建 ...
- mybatis-plus自动填充
1,给字段添加注解 @TableField(value = "create_time", fill = FieldFill.INSERT) 2,添加填充处理器,需要实现接口Meta ...
- 小书MybatisPlus第9篇-常用字段默认值自动填充
本文为Mybatis Plus系列文章的第9篇,前8篇访问地址如下: 小书MybatisPlus第1篇-整合SpringBoot快速开始增删改查 小书MybatisPlus第2篇-条件构造器的应用及总 ...
- 【mybatis-plus】主键id生成、字段自动填充
一.主键id的生成 数据库表里通常都会有一个主键id,来作为这条数据的唯一标识. 常见的方式 数据库自动增长 这种很常见了,可以做到全库唯一.因为id是天然排序的,对于涉及到排序的操作会很方便. UU ...
- MP(MyBatis-Plus)的自动填充功能
什么是自动填充 有些表中会有更新时间.创建时间.更新人或者创建人这些字段. 每次对数据进行新增.删除.修改时都需要对这些字段进行设置.传统的做法是在进行这些操作前,对Entity的字段进行set设置, ...
- 项目集成seata和mybatis-plus冲突问题解决方案:(分页插件失效, 自动填充失效, 自己注入的id生成器失效 找不到mapper文件解决方案)
项目集成seata和mybatis-plus,seata与mybatis-plus冲突问题(所有插件失效,自动填充失效,找不到mapper文件解决方案) 自动填充代码: package com.fro ...
- mybatis-plus时间字段自动填充
时间代码自动填充的2种方式 数据库方式 将数据库字段create_time和update_time设置CURRENT_TIMESTAMP,create_time字段后面不需要勾选更新,update_t ...
- Mybatis-Plus使用@TableField实现自动填充日期
一.前言 我们在日常开发中经常使用ORM框架,比如Mybatis.tk.Mybatis.Mybatis-Plus.不过最广泛的还是Mybatis-Plus,我们的一些表,都会有创建时间.更新时间.创建 ...
- mybatis-plus 自动生成代码
public class MpGenerator { /** * <p> * MySQL 生成演示 * </p> */ public static void main(Stri ...
- jQuery 实现带下拉提示且自动填充的邮箱
/* ** 本文例子所引用的jQuery版本为 jQuery-1.8.3.min.js ** Author:博客园小dee*/ 本文用 jQuery 实现一个用户输入字符时出现能够提示邮箱后缀名的下拉 ...
随机推荐
- iOS开发--APP性能检测方案汇总
1 . CPU 占用率 CPU作为手机的中央处理器,可以说是手机最关键的组成部分,所有应用程序都需要它来调度运行,资源有限.所以当我们的APP因设计不当,使 CPU 持续以高负载运行,将会出现APP卡 ...
- MBR与GPT[转]
MBR分区 MBR的意思是"主引导记录",是IBM公司早年间提出的.它是存在于磁盘驱动器开始部分的一个特殊的启动扇区. 这个扇区包含了已安装的操作系统系统信息,并用一小段代码来启动 ...
- homework1(1)
来自桂林理工大学物联网工程2019届的April 没参与过什么比赛项目但是课程学习能力还行,主要是快速学习之后很快就会忘记,接下来应该好好的总结并熟练记住运用知识完成对生活等各种的实践. 对课程的希望 ...
- nuttx理解
操作系统:为啥要引入操作系统,个人的理解是为了实时性(即及时的响应性). 没有操作系统下多个任务都只能以前后台的方式排队执行,对某个任务的输入不能得到及时的响应:虽然后台有中断,但不能把所有的任务都放 ...
- 第17章 使用日志记录监视和排除错误(ASP.NET Core in Action, 2nd Edition)
第3部分 扩展应用程序 我们在第1部分和第2部分中介绍了大量内容:我们查看了您将用于构建传统服务器渲染的 Razor Pages 应用程序以及 Web API 的所有主要功能组件.在第3部分中,我们将 ...
- 工控小工具 snmp 、opc ua 、modbus 、tcp、bacnet 开发环境Net6.0
下载地址 https://files.cnblogs.com/files/blogs/745639/net6.0-windows.rar?t=1674114312
- Java流程控制1
Scanner对象 java.util.Scanner 通过Scanner类来获取用户输入 next()和nextline()来获取输入的字符串,读取前我们一般需要使用hasnext()和hasnex ...
- linux 离线安装jdk
系统版本:centos7.8 | jdk版本:1.8 jdk版本:jdk-8u5-linux-x64.rpm 点击下载 提取码: ud1r 检查系统是否已经有JDK,输入如下命令查看是否系统中是否已安 ...
- node.js与js的关系
- Hive 操作与应用 词频统计
一.hive用本地文件进行词频统计 1.准备本地txt文件 2.启动hadoop,启动hive 3.创建数据库,创建文本表 4.映射本地文件的数据到文本表中 5.hql语句进行词频统计交将结果保存到结 ...