系列文章目录
业务场景
由于系统中要同时访问多个数据库,业务中要访问哪个数据库是明确,不是在运行中动态选择。其实mybatisplus本身提供了动态切换数据库的支持,但并不符合我的期望。我希望是数据源跟Mapper静态绑定。其实网上有不少mybatis的多数据源集成方案。但我项目中用的是mybatisplus,稍微有点区别。
一、注意事项
1、mybatis支持多数据源,其做法每个数据源对应独立的一套配置包括:MapperScan扫描路径、DataSource\SqlSesessionFactory\DataSourceTransactionManager\SqlSessionTemplate。
2、MapperScan 必须配置 sqlSessionTemplateRef 的SqlSessionTemplate都引用。
3、注意 MybatisSqlSessionFactoryBean 不能缺席;
4、要为每个SqlSessionFactory 指定要加载 各数据库的mapper.xml;
二、使用步骤
1.数据源配置
项目是springboot工程,数据源的配置如下:
spring:
datasource:
数据库1:
driver-class-name: com.mysql.cj.jdbc.Driver
#这里 由单数据源的 url 改成 jdbc-url,原因未知
jdbc-url: jdbc:mysql://ip:3306/数据库1?useUnicode=true&characterEncoding=utf-8&useSS