SpringBoot+MyBatisPlus 公共字段自动填充 MybatisPlusConfig配置不生效解决

SpringBoot+MyBatisPlus MybatisPlusConfig配置不生效问题

先说下工程目录
SpringBoot+MyBatisPlus 公共字段自动填充 MybatisPlusConfig配置不生效解决_第1张图片
典型的Maven工程,在common中配置MyBatisPlus配置信息,在Base中进行CRUD操作。
遇到的问题:
在MyBatisPlus中配置了公共字段(create_time,upate_time),想在插入数据时,自动插入这两条字段。
配置如下:
AbstractEntity 代码:

/**
 * 实体父类
 */
@Data
public abstract class AbstractEntity extends Model implements Serializable {
    private static final long serialVersionUID = 1L;

    /**
     * ID
     */
    @TableId
    private String id;
    /**
     * 创建时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @TableField(value = "create_time", fill = FieldFill.INSERT)
    public Date createTime;
    /**
     * 修改时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @TableField(value = "update_time", fill = FieldFill.UPDATE)
    public Date updateTime;
}

MetaHandler代码:

@Slf4j
@Component
public class MetaHandler implements MetaObjectHandler {

    /**
     * 新增数据执行
     * @param metaObject
     */
    @Override
    public void insertFill(MetaObject metaObject) {
        this.setFieldValByName("createTime", new Date(), metaObject);
        this.setFieldValByName("updateTime", new Date(), metaObject);
    }

    /**
     * 更新数据执行
     * @param metaObject
     */
    @Override
    public void updateFill(MetaObject metaObject) {
        this.setFieldValByName("updateTime", new Date(), metaObject);
    }
}

MybatisPlusConfig 代码:

@Configuration
@MapperScan("com.lyf.account.**.mapper")
public class MybatisPlusConfig {


    /*
     * 分页插件,自动识别数据库类型
     * 多租户,请参考官网【插件扩展】
     */
    @Bean
    public PaginationInterceptor paginationInterceptor() {
        return new PaginationInterceptor();
    }

    @Bean
    public GlobalConfig globalConfig() {
        GlobalConfig globalConfig = new GlobalConfig();
        globalConfig.setMetaObjectHandler(new MetaHandler());
        return globalConfig;
    }
}

配置后,启动BaseApplication,使用Postman 进行测试,发现数据成功插入,但是创建时间并没有插入
在MybatisPlusConfig 的 globalConfig.setMetaObjectHandler(new MetaHandler());处打断点进行调试,发现代码并没有执行到这个类 (╯▔皿▔)╯ 检查 BaseApplication 才发现,没有在启动类中扫描该配置文件@。@
以下是修改过的BaseApplication类:

@SpringBootApplication
@ComponentScan({"com.lyf.account.mybatis.config","com.lyf.account.base"})
public class BaseApplication {
    public static void main(String[] args) {
        SpringApplication.run(BaseApplication.class, args);
    }

    @Bean
    public IdWorker idWorker (){
        return new IdWorker(1,1);
    }
}

加入扫描装配后,再次进行测试,插入数据完美将创建时间加入O(∩_∩)O

你可能感兴趣的:(StringBoot,MybatisPlus)