天天看點

Spring Boot下配置MyBatis多資料源

spring boot最大的特點是簡化開發,是以使用java config實作去xml配置,本文将使用這種方式完成對阿裡雲ads和rds兩個産品的多資料源配置。同時,會用到阿裡巴巴的開源資料源druid。

因為ads和rds都相容mysql的jdbc實作,是以工程隻需要依賴mysql的driver。

spring boot易用性的特點是通過starter實作的,我們隻需依賴mybatis的spring-boot-starter即可。

druid是資料源。

多資料源配置要求必須有一個是『主』,我們将rds設定為主,配置如下:

<code>@value</code>将擷取spring boot全局配置檔案的kv配置。也可以通過<code>environment</code>對象的<code>getproperty</code>方法獲得kv配置。

<code>@mapperscan</code>配置要掃描并容器管理的包路徑,這裡我們精确到rds,以便使其内的<code>mapper</code>(見下文)與其他資料源隔離。

<code>sqlsessionfactoryref</code>要定義key唯一的<code>sqlsessionfactory</code>執行個體,否則同名的處理是後者被忽略。

類似地,另一個資料源ads的配置如下:

mapper是mybatis的dal層接口,其實作是由mybatis内部完成的,也就是說,我們隻需要定義好接口即可完成crud。

<code>com.aliyun.xxx.repository.mybatis.rds</code>包内的<code>mapper</code>隻會用到rds資料源。

上述<code>mapper</code>定義了一個<code>select</code>方法,<code>@selectprovider</code>用于定義具體的sql語句,<code>@results</code>用于定義具體的表字段與pojo屬性的映射。

<code>metaselectprovider</code>可以使用mybatis的api完成sql的拼裝。

spring boot的入口類定義如下:

使用spring的上下文,完成單元測試: