YuKongEr / SpringBoot-Study

study springboot

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

chapter5 使用DatabaseIdProvider的问题

quanfuli opened this issue · comments

当我使用DatabaseIdProvider的时候切换好像有些问题,我是使用了不同类型的数据源。可能不太符合作者要解决的问题。

你能描述的消息点吗 我不是很能理解

比如,master使用oracle数据库,cluster中使用mysql数据库。
@bean
public DatabaseIdProvider getDatabaseIdProvider() {
DatabaseIdProvider databaseIdProvider = new VendorDatabaseIdProvider();
Properties p = new Properties();
p.setProperty("Oracle", "oracle");
p.setProperty("MySQL", "mysql");
databaseIdProvider.setProperties(p);
return databaseIdProvider;
}
当切换到cluster中的数据库(mysql)的时候,仍然还是走mapper中 databaseId="oracle"的语句。

原因找到了,是因为mybatis的SqlSessionFactoryBean只在spring配置文件第一次加载的时候初始化,动态切换数据源之后并没有通知SqlSessionFactoryBean修改databaseId为当前数据源,所以依旧使用默认数据源执行sql。

em 谢谢 如果你能修改这个bug可以提一个pull request