简介
多数据源切换–Springboot–mybatis.本文介绍两种数据源的配置方式. 分包和基于aop的方式
代码地址
AOP : GitHub代码地址
分包 : GitHub代码地址
mybatis Aop
和spring的多数据源配置原理一样不过就是把xml配置改为的java配置
-
配置pom.xml
-
添加测试数据
-
配置properties
-
配置数据源
-
配置数据源的切换获取类
DbContextHolder
-
扩展Spring的
AbstractRoutingDataSource
抽象类,实现动态数据源。 -
配置 使用哪个数据源的注解 和AOP
-
在mapper上添加注解
-
测试
mybatis 分包
-
pom.xml
-
添加测试数据
-
配置properties
-
配置数据源01
-
配置数据源02
-
配置mapper01 接口 和 xml
-
配置mapper02 接口 和 xml
-
配置测试service
-
测试
-
查看插入结果
FAQ
在整理问题前,先总结下mybatis数据源注入的流程
- sping加载时通过
MapperScan
注解扫描,需要注入的接口bean,然后通过动态代理的方式实例化接口bean - 在实例化接口bean时,会通过
Maperscan
中配置的sqlSessionFactoryRef
来确定使用那个sessionfacory,如果没有配置则会寻找sessionFactory的工厂bean,如果此时存在多或者不存在则报错,存在多个时需要通过@Primary注解来定义使用哪个factory
问题 :
原因 : 找到了两个sqlSessionFactory
参考链接 :
解决 : 添加Primary
注解
问题 :
原因 : xml文件没有添加到,相应的解析路径,或者包名配置错误
参考链接 :
解决 :
无法获取到方法上自定义的注解
问题 : 使用自定义注解getAnnotation无法获取到
原因 : 创建注解时没有添加元注解
参考链接 :
解决 :
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD,ElementType.TYPE})
@Documented
参考链接
springboot + mybatis + druid + 多数据源