天天看点

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的上下文,完成单元测试: