SpringBoot与MybatisPlus整合之公用字段填充(十一)

时间:2019-10-31
本文章向大家介绍SpringBoot与MybatisPlus整合之公用字段填充(十一),主要包括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=11897745535728066572019-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=12019-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=12019-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

原文地址:https://www.cnblogs.com/dalianpai/p/11770689.html