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

最新版本

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

有如下配置

@MapperScan(value = "com.ooooo.demo1.mapper",
    sqlSessionFactoryRef = DEMO_SQL_SESSION_FACTORY)

@Bean(name = DEMO_SQL_SESSION_FACTORY)
public SqlSessionFactory sqlSessionFactory() {
  // 使用configuratin 自定义了属性
 Environment environment = new Environment(COMPONENT_CONFIG, new SpringManagedTransactionFactory(), dataSource);
MybatisConfiguration configuration = new MybatisConfiguration();
 configuration.setEnvironment(environment);
 configuration.setCacheEnabled(false);
configuration.setLocalCacheScope(LocalCacheScope.STATEMENT);
return new MybatisSqlSessionFactoryBuilder().build(configuration)
}


@MapperScan(value = "com.ooooo.demo2.mapper")

 应该使用全局默认的, 但是现在使用的是 DEMO_SQL_SESSION_FACTORY, 这是因为 MybatisPlusAutoConfiguration 的 SqlSessionFactory 只有@ConditionalOnMissingBean, 没有定义全局默认的beanName,导致覆盖了。

如果要修改这个问题,ClassPathMapperScanner 的代码要注意下。
definition.setAutowireMode(AbstractBeanDefinition.AUTOWIRE_BY_TYPE)


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

报错信息

Comment From: miemieYaho

?

Comment From: ooooo-youwillsee

不懂问题吗?

我举个例子

@MapperScan(value = "com.ooooo.demo1.mapper",
    sqlSessionFactoryRef = A)
@MapperScan(value = "com.ooooo.demo2.mapper",
    sqlSessionFactoryRef = B)
@MapperScan(value = "com.ooooo.demo3.mapper")

我希望 demo3 可以全局默认的配置, 而不是 A 和 B 

Comment From: miemieYaho

mybatis支持这样吗?

Comment From: ooooo-youwillsee

应该也不支持多configuration配置,只支持多datasource使用全局的configuration, 但是 mybatsi-plus 有 GlobalConfig globalConfig = GlobalConfigUtils.getGlobalConfig(configuration); ,所以实现这个应该不难

Comment From: miemieYaho

你自己定义了Bean就用你自己的,都是这样默认的,不会改这块逻辑,你想定义几个SqlSessionFactory就几个,那是你的事