2017-01-23 163 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)。