SpringBoot与MybatisPlus整合之公用字段填充(十一)
在实际开发中,适合用于记录创建人修改人
- pom.xml - <dependencies> 
 <dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter</artifactId>
 </dependency>
 <dependency>
 <groupId>com.baomidou</groupId>
 <artifactId>mybatis-plus-boot-starter</artifactId>
 <version>3.2.0</version>
 </dependency>
 <dependency>
 <groupId>org.projectlombok</groupId>
 <artifactId>lombok</artifactId>
 </dependency>
 <!-- https://mvnrepository.com/artifact/p6spy/p6spy -->
 <dependency>
 <groupId>p6spy</groupId>
 <artifactId>p6spy</artifactId>
 <version>3.8.0</version>
 </dependency>
 <dependency>
 <groupId>com.h2database</groupId>
 <artifactId>h2</artifactId>
 <scope>runtime</scope>
 </dependency>
 
 <dependency>
 <groupId>com.alibaba</groupId>
 <artifactId>fastjson</artifactId>
 <version>1.2.49</version>
 <scope>test</scope>
 </dependency>
 <!-- for testing -->
 <dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-test</artifactId>
 <scope>test</scope>
 </dependency>
 </dependencies>
- application.yml - spring: 
 datasource:
 driver-class-name: com.p6spy.engine.spy.P6SpyDriver
 url: jdbc:p6spy:h2:tcp://192.168.180.115:19200/~/mem/test
 username: root
 password: test
- 实体类 - @Data 
 @TableName(value = "user")
 @NoArgsConstructor
 @AllArgsConstructor
 public class User { private Long id; private String name; private Integer age; private String email; @TableField(fill = FieldFill.INSERT_UPDATE)
 private String operator;
 }
 
 @Mapper
 public interface UserMapper extends BaseMapper<User> {
 
 }
- 填充器 - @Component 
 public class MyMetaObjectHandler implements MetaObjectHandler {
 
 private static final Logger LOGGER = LoggerFactory.getLogger(MyMetaObjectHandler.class);
 
 @Override
 public void insertFill(MetaObject metaObject) {
 LOGGER.info("start insert fill ....");
 //避免使用metaObject.setValue()
 this.setFieldValByName("operator", "Jerry", metaObject);
 }
 
 @Override
 public void updateFill(MetaObject metaObject) {
 LOGGER.info("start update fill ....");
 this.setFieldValByName("operator", "Tom", metaObject);
 }
 }
- 测试类 - @SpringBootTest 
 class MetainfoApplicationTests {
 
 private static final Logger LOGGER = LoggerFactory.getLogger(MetainfoApplicationTests.class);
 
 @Autowired(required = false)
 private UserMapper userMapper;
 
 @Test
 public void test(){
 User user = new User(null,"Tom",1,"tom@qq.com",null);
 userMapper.insert(user);
 LOGGER.info("query user:{}",userMapper.selectById(user.getId()));
 User beforeUser = userMapper.selectById(1L);
 LOGGER.info("before user:{}",beforeUser);
 beforeUser.setAge(12);
 userMapper.updateById(beforeUser);
 LOGGER.info("query user:{}",userMapper.selectById(1L));
 }
 
 }
- 测试结果
2019-10-31 13:22:13.328 INFO 14172 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start completed.
Consume Time:0 ms 2019-10-31 13:22:13
Execute SQL:INSERT INTO user ( id, name, operator, email, age ) VALUES ( 1189774553572806657, 'Tom', 'Jerry', 'tom@qq.com', 1 )
Consume Time:6 ms 2019-10-31 13:22:13
Execute SQL:SELECT id,name,operator,email,age FROM user WHERE id=1189774553572806657
2019-10-31 13:22:13.394 INFO 14172 --- [ main] c.mp.metainfo.MetainfoApplicationTests : query user:User(id=1189774553572806657, name=Tom, age=1, email=tom@qq.com, operator=Jerry)
2019-10-31 13:22:13.397 INFO 14172 --- [ main] c.mp.metainfo.MetainfoApplicationTests : before user:User(id=1, name=Jone, age=18, email=test1@baomidou.com, operator=test)
Consume Time:0 ms 2019-10-31 13:22:13
Execute SQL:SELECT id,name,operator,email,age FROM user WHERE id=1
2019-10-31 13:22:13.404 INFO 14172 --- [ main] c.m.m.handler.MyMetaObjectHandler : start update fill ....
Consume Time:0 ms 2019-10-31 13:22:13
Execute SQL:UPDATE user SET name='Jone', operator='Tom', email='test1@baomidou.com', age=12 WHERE id=1
2019-10-31 13:22:13.417 INFO 14172 --- [ main] c.mp.metainfo.MetainfoApplicationTests : query user:User(id=1, name=Jone, age=12, email=test1@baomidou.com, operator=Tom)
Consume Time:1 ms 2019-10-31 13:22:13
Execute SQL:SELECT id,name,operator,email,age FROM user WHERE id=1
SpringBoot与MybatisPlus整合之公用字段填充(十一)的更多相关文章
- SpringBoot+Mybatis+MybatisPlus整合实现基本的CRUD操作
		SpringBoot+Mybatis+MybatisPlus整合实现基本的CRUD操作 1> 数据准备 -- 创建测试表 CREATE TABLE `tb_user` ( `id` ) NOT ... 
- SpringBoot系列——MyBatis-Plus整合封装
		前言 MyBatis-Plus是一款MyBatis的增强工具(简称MP),为简化开发.提高效率,但我们并没有直接使用MP的CRUD接口,而是在原来的基础上封装一层通用代码,单表继承我们的通用代码,实现 ... 
- SpringBoot与Mybatis-plus整合,代码生成mvc层
		一.添加pom依赖 <!-- mysql驱动 --> <dependency> <groupId>mysql</groupId> <artifac ... 
- SpringBoot与MybatisPlus整合之SQL分析插件(六)
		pom.xml: <dependency> <groupId>p6spy</groupId> <artifactId>p6spy</artifac ... 
- SpringBoot与MybatisPlus整合之活动记录(十五)
		活动记录和正常的CRUD效果是一样的,此处只当一个拓展,了解即可 pom.xml <dependencies> <dependency> <groupId>org. ... 
- 2、SpringBoot+MybatisPlus整合-------BaseCRUD
		开发工具:STS 代码下载链接:GitHub管理代码 版本: Springboot:1.5.14.RELEASE 使用2.0以上的Springboot,会报出一些异常.欢迎知道异常原因的大牛解惑. M ... 
- SpringBoot+Mybatis-Plus整合Sharding-JDBC5.1.1实现单库分表【全网最新】
		一.前言 小编最近一直在研究关于分库分表的东西,前几天docker安装了mycat实现了分库分表,但是都在说mycat的bug很多.很多人还是倾向于shardingsphere,其实他是一个全家桶,有 ... 
- 使用Springboot + Gradle快速整合Mybatis-Plus
		使用Springboot + Gradle快速整合Mybatis-Plus 作者:Stanley 罗昊 [转载请注明出处和署名,谢谢!] MyBatis-Plus(简称 MP)是一个 MyBatis ... 
- 从零开始的SpringBoot项目 ( 六 ) 整合 MybatisPlus 实现代码自动生成
		1.添加依赖 <!-- MySQL数据库 --> <dependency> <groupId>mysql</groupId> <artifactI ... 
随机推荐
- Java 提取Word中的文本和图片
			本文将介绍通过Java来提取或读取Word文档中文本和图片的方法.这里提取文本和图片包括同时提取文档正文当中以及页眉.页脚中的的文本和图片. 使用工具:Free Spire.Doc for Java ... 
- spring 定时器知识点
			一.各域说明 字段域 秒 分 时 日 月 星期(7为周六) 年(可选) 取值范围 0-59 0-59 0-23 1-31 1-12或JAN–DEC 1-7或SUN–SAT 1970–2099 可用字符 ... 
- [Mathematics][MIT 18.03] Proof of a Theory about the Solution to Second-order Linear Homogeneous Differential Equation
			At first, I'd like to say thank you to MIT open courses which give me the privilege to enjoy the mos ... 
- 004-python面向对象,错误,调试和测试
			---恢复内容开始--- 1.面向对象 面向对象编程——Object Oriented Programming,简称OOP,是一种程序设计思想.OOP把对象作为程序的基本单元,一个对象包含了数据和操作 ... 
- Java基础学习笔记(五) - 常用的API
			API介绍 概念:API 即应用编程程序接口.Java API是JDK中提供给我们使用的类说明文档,这些类将底层的代码实现封装.无需关心这些类是如何实现,只需要学习如何使用. 使用:通过API找到需要 ... 
- .Net Core下使用HtmlAgilityPack解析采集互联网数据
			HtmlAgilityPack应该算是.Net下最好用的html解析库了. 因为最近帮朋友采集一些数据,在nuget里面搜索了好几个库,最后决定就用HtmlAgilityPack.并简单的记录下使用的 ... 
- DOM操作方法、属性
			话不多说直接上demo: <!DOCTYPE html> <html lang="en"> <head> <meta charset=&q ... 
- 洛谷 P3833 [SHOI2012]魔法树
			题目背景 SHOI2012 D2T3 题目描述 Harry Potter 新学了一种魔法:可以让改变树上的果子个数.满心欢喜的他找到了一个巨大的果树,来试验他的新法术. 这棵果树共有N个节点,其中节点 ... 
- node的重点学习笔记(1)————node
			node的重点学习笔记(1)----node 提到node就必须提一下他的npm了,npm是世界上最大的开放源代码的生态系统.通俗来说这就如同亚马逊丛林,要啥物种有啥物种,一个巨大的生态圈,里面有一堆 ... 
- python selenium句柄操作
			一.获取当前窗口句柄 1.元素有属性,浏览器的窗口其实也有属性的,只是你看不到,浏览器窗口的属性用句柄(handle)来识别. 2.人为操作的话,可以通过眼睛看,识别不同的窗口点击切换.但是脚本没长眼 ... 
