baomidou / mybatis-plus

An powerful enhanced toolkit of MyBatis for simplify development
https://baomidou.com
Apache License 2.0
16.3k stars 4.3k forks source link

自动填充功能不生效,MyObjectHandler 两个方法不执行 #2429

Closed qiaozhiqma closed 4 years ago

qiaozhiqma commented 4 years ago

当前使用版本(必填,否则不予处理)

版本 3.0.7.1

该问题是如何引起的?(确定最新版也有问题再提!!!)

重现步骤(如果有就写完整)

  1. 实体类:@Data @NoArgsConstructor @AllArgsConstructor @TableName("user") public class User { private Long id; private String name; private Integer age; @TableField(fill = FieldFill.INSERT_UPDATE) private String email; //在创建的时候填充这个字段 private LocalDateTime createDate; //在更新的时候更新这个字段 private LocalDateTime updateDate; //逻辑删除标志 @TableLogic //查询的时候排除这个属性 @TableField(select = false) private Integer delFlag;

}

  1. 自定义处理器

@Component public class MyObjectHandler implements MetaObjectHandler {

@Override
public void insertFill(MetaObject metaObject) {
    this.strictInsertFill(metaObject, "email", String.class, "liukun");
    System.out.println("aaa");
    System.out.println("bbb");
}

@Override
public void updateFill(MetaObject metaObject) {
    System.out.println("更新");

}

}

  1. test测试如下 @Test public void test7(){ User user = new User(); user.setName("陈二牛");

    int insert = userMapper.insert(user);
    System.out.println(insert);

    }

4,控制台打印 ==> Preparing: INSERT INTO user ( id, name, age, email ) VALUES ( ?, ?, ? ) ==> Parameters: 1257479187862765570(Long), 陈二牛, null <== Updates: 1

  1. pom 文件如下 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">

    4.0.0 org.springframework.boot spring-boot-starter-parent 2.2.2.RELEASE com.example demo 0.0.1-SNAPSHOT demo Demo project for Spring Boot 1.8 org.springframework.boot spring-boot-starter-web org.projectlombok lombok true com.alibaba druid 1.1.22 mysql mysql-connector-java runtime com.baomidou mybatis-plus-boot-starter 3.0.7.1 org.springframework.boot spring-boot-starter-test test org.springframework.boot spring-boot-maven-plugin

  1. yml 文件如下

    server: port: 8081 servlet: context-path: /demo spring: datasource: type: com.alibaba.druid.pool.DruidDataSource driver-class-name: com.mysql.jdbc.Driver url: jdbc:mysql://localhost:3306/my-plus?serverTimezone=UTC&allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8 username: root password: root filters: stat maxActive: 20 initialSize: 1 maxWait: 60000 minIdle: 1 timeBetweenEvictionRunsMillis: 60000 minEvictableIdleTimeMillis: 300000 validationQuery: select 1 FROM DUAL testWhileIdle: true testOnBorrow: false testOnReturn: false poolPreparedStatements: true maxOpenPreparedStatements: 20 mybatis-plus:

    日志配置

    configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

    扫描xml文件

    mapper-locations: classpath:templates/mapper/*Mapper.xml

    注册别名实体类

    typeAliasesPackage: com.springboot.mybatisplus.demo.model

    逻辑删除配置

    global-config: db-config:

    逻辑不删除值为0是mp默认值

    logic-not-delete-value: 0

    逻辑删除为1是mp默认值

    logic-delete-value: 1

  2. 最后发现 MyObjectHandler 两个方法都不执行

报错信息

miemieYaho commented 4 years ago

自己排查

xgj1988 commented 4 years ago

@qiaozhiqma 搞定没得