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