当前使用版本(必填,否则不予处理)
最新版本
该问题是如何引起的?(确定最新版也有问题再提!!!)
有如下配置
@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就几个,那是你的事