关于多数据源的配置,前面和大伙介绍过 JdbcTemplate 多数据源配置,那个比较简单,本文来和大伙说说 MyBatis 多数据源的配置。
其实关于多数据源,我的态度还是和之前一样,复杂的就直接上分布式数据库中间件,简单的再考虑多数据源。这是项目中的建议,技术上的话,当然还是各种技术都要掌握的。
工程创建
首先需要创建 MyBatis 项目,项目创建和前文的一样,添加 MyBatis、 MySQL 以及 Web 依赖:
项目创建完成后,添加 Druid 依赖,和 JdbcTemplate 一样,这里添加 Druid 依赖也必须是专为 Spring Boot 打造的 Druid,不能使用传统的 Druid。完整的依赖如下:
<dependency>
多数据源配置
接下来配置多数据源,这里基本上还是和 JdbcTemplate 多数据源的配置方式一致,首先在 application.properties 中配置数据库基本信息,然后提供两个 DataSource 即可,这里我再把代码贴出来,里边的道理条条框框的,大伙可以参考前面的文章,这里不再赘述。
application.properties 中的配置:
spring.datasource.one.url=jdbc:mysql:///test01?useUnicode=true&characterEncoding=utf-8spring.datasource.one.username=rootspring.datasource.one.password=rootspring.datasource.one.type=com.alibaba.druid.pool.DruidDataSourcespring.datasource.two.url=jdbc:mysql:///test02?useUnicode=true&characterEncoding=utf-8spring.datasource.two.username=rootspring.datasource.two.password=rootspring.datasource.two.type=com.alibaba.druid.pool.DruidDataSource
然后再提供两个 DataSource,如下:
@Configuration
MyBatis 配置
接下来则是 MyBatis 的配置,不同于 JdbcTemplate,MyBatis 的配置要稍微麻烦一些,因为要提供两个 Bean,因此这里两个数据源我将在两个类中分开来配置,首先来看第一个数据源的配置:
@Configuration
创建 MyBatisConfigOne 类,首先指明该类是一个配置类,配置类中要扫描的包是 org.javaboy.mybatis.mapper1 ,即该包下的 Mapper 接口将操作 dsOne 中的数据,对应的 SqlSessionFactory 和 SqlSessionTemplate 分别是 sqlSessionFactory1 和 sqlSessionTemplate1,在 MyBatisConfigOne 内部,分别提供 SqlSessionFactory 和 SqlSessionTemplate 即可, SqlSessionFactory 根据 dsOne 创建,然后再根据创建好的SqlSessionFactory 创建一个 SqlSessionTemplate。
这里配置完成后,依据这个配置,再来配置第二个数据源即可:
@Configuration
好了,这样 MyBatis 多数据源基本上就配置好了,接下来只需要在 org.javaboy.mybatis.mapper1 和 org.javaboy.mybatis.mapper2 包中提供不同的 Mapper,Service 中注入不同的 Mapper 就可以操作不同的数据源。
mapper 创建
org.javaboy.mybatis.mapper1 中的 mapper:
public
对应的 XML 文件:
<?xml version="1.0" encoding="UTF-8" ?>
org.javaboy.mybatis.mapper2 中的 mapper:
public
对应的 XML 文件:
<?xml version="1.0" encoding="UTF-8" ?>
接下来,在 Service 中注入两个不同的 Mapper,不同的 Mapper 将操作不同的数据源。
好了,关于 MyBatis 多数据源本文就先说到这里。