Mybatis-Plus 自定义ObjectHandler填充字段无效的问题

Mybatis-Plus 自定义ObjectHandler填充字段无效的问题

      • 可能的原因

最近项目正在用MP重构,重构过程中遇到这样的问题。公共字段填充失效,Debug发现没有进到改实现中,也就是配置失效了,去访问官方文档,我的配置也完全符合文档中的要求,几经周折,终于得到解决方案,在这里记录一下。

可能的原因

1.如果不是多数据源

  • 自定义Handler实现元对象处理器接口:com.baomidou.mybatisplus.core.handlers.MetaObjectHandler
  • 需要填充的字段上加注解 @TableField(… fill = FieldFill.INSERT)
public enum FieldFill {
    /**
     * 默认不处理
     */
    DEFAULT,
    /**
     * 插入填充字段
     */
    INSERT,
    /**
     * 更新填充字段
     */
    UPDATE,
    /**
     * 插入和更新填充字段
     */
    INSERT_UPDATE
}

Mybatis-Plus 自定义ObjectHandler填充字段无效的问题_第1张图片
如果以上配置还不生效,需要自己Debug一下看有没有进入到方法中。

2.多数据源的问题
由于我是多数据源自定义配置,去检查一下配置,可能有两种情况

  • 配置SQLSessionFactory 没有使用MybatisSqlSessionFactoryBean
    Mybatis-Plus 自定义ObjectHandler填充字段无效的问题_第2张图片
  • MetaObjectHandler没有配置进来
    如果是使用代码方式配置,则需要配置到GlobalConfig中:
@Bean("sqlSessionFactory")
   public SqlSessionFactory ds1SqlSessionFactory( DataSource dataSource) throws Exception {
       MybatisSqlSessionFactoryBean sqlSessionFactoryBean = new MybatisSqlSessionFactoryBean();
       GlobalConfig globalConfig=new GlobalConfig();
       globalConfig.setMetaObjectHandler(new BaseFieldObjectHandler() );
       sqlSessionFactoryBean.setGlobalConfig(globalConfig);
       sqlSessionFactoryBean.setDataSource(dataSource);
       sqlSessionFactoryBean.setMapperLocations(
               new PathMatchingResourcePatternResolver().getResources("classpath*:mapper/*.xml"));
       return sqlSessionFactoryBean.getObject();
   }

或者 使用@Bean 的方式将实现类注入进来。

以上希望能帮到你。

你可能感兴趣的:(错误修改记录,spring)