SpringBoot+MyBatisPlus 自动填充字段 配置不生效
记录在MyBatisPlus配置文件中踩过的坑,配置后globalConfig没有加载到继承的MetaObjectHandler类,导致自动填充字段功能无效。
实体类配置
首先在实体中设置需要自动填充的字段
public class User {
// 注意!这里需要标记为填充字段
@TableField(value = "create_time", fill = FieldFill.INSERT)
private String createTime;
}
创建MetaObjectHandler类
@Component
public class BaseHandler implements MetaObjectHandler {
@Override
public void insertFill(MetaObject metaObject) {
this.setFieldValByName("createTime", LocalDateTime.now(), metaObject);
}
@Override
public void updateFill(MetaObject metaObject) {
}
}
错误MybatisPlusConfig配置
@Configuration
@AllArgsConstructor
public class MybatisPlusConfig {
//配置MetaObjectHandler
@Bean
public GlobalConfig globalConfig() {
GlobalConfig globalConfig = new GlobalConfig();
globalConfig.setMetaObjectHandler(new BaseHandler ());
return globalConfig;
}
}
通过debug发现,GlobalConfig进行配置BaseOrganHandler没有通过@Component实例化
正确MybatisPlusConfig配置
@Configuration
@AllArgsConstructor
public class MybatisPlusConfig {
//配置MetaObjectHandler
@Bean
public BaseHandler baseHandler () {
return new BaseHandler ();
}
}
直接通过@Bean注入的方式在MybatisPlusConfig中创建自动填充BaseHandler 成功!