2017-01-23 161 views
2

这对于简单的Spring DAO方法来说是相当直接的。但是,使用MyBatis,有没有办法设置多个潜在的数据源?MyBatis Spring多个数据库的DYNAMIC数量Java配置

我能想到的最好的方法是使用一个Bean的ArraList各自含有datasource.driverclass,datasource.url,datasource.username,datasource.password等

用于数据源的值被存储在单个属性文件。可能有1或10个这些属性文件(或更多)。

因此,例如,一次启动所有属性文件的应用程序将一次加载到一个ArrayList中。然后,根据属性文件中的NAME = value行,我们将知道要打哪个数据源。

所以HTTP:本地主机:8080 /名称= DB1

...将从名称为 “09” 配置数据源访问所有数据。每个属性文件将包含:

name=db1 
datasource.driverclass=jdbc:sqlserver 
datasource.url=jdbc:sqlserver://localhost:1433;databaseName=someDBname 
datasource.username=user1 
datasource.password=pass1 

所以这里的标识符是“name = db1”。

MyBatis实现的最佳方法是使用Bean的ArrayList吗?

+0

您是否想提供多租户服务?如果是这样,那么可能有更好的解决方案,比尝试像这样推出自己的产品更好。 – Kayaman

+0

请编辑你的问题,告诉我们更多关于上下文的信息,你想达到什么目的?你为什么使用多个数据源?全部采用相同的方案?相同的数据? – blackwizard

+0

@Kayaman - 这正是该计划,一个多租户解决方案。你觉得在这种情况下会有更好的建议吗? – SiriusBits

回答

0

我最终使用了一个分层的application.yml文件,详细说明了基于选定租户代码的多租户连接值。

1

这里有一些线索,如果你想保持与多个DB:

无论如何,我会说数据源必须在服务器confiquration,而不是在应用程序进行管理。

然后Mybatis的主配置文件必须放在一个添加到类路径但位于应用程序包之外的位置,因为每个新的数据源必须在环境元素内被引用。

对于每个用户请求或会话(如果是web应用程序),配置将被解析,因为必须调用SqlSessionFactoryBuilder.build(reader, environment=NAME);来选择环境(=> DB)。