mapper-boot-starter
mapper-boot-starter copied to clipboard
多数据源的配置可以更具体一点吗
mapper.mappers[0]=tk.mybatis.sample.mapper.BaseMapper mapper.mappers[1]=tk.mybatis.mapper.common.Mapper 这里两组如何对应不同的jdbc配置
我看到 MapperAutoConfiguration里的List<SqlSessionFactory> sqlSessionFactoryList; 就跟不下去了
@abel533 @bohrqiu
多数据源的配置和mapper没有关系。我说下我们这边如何实现的:
-
下面是我们提供的配置项,供开发人员使用
#配置第一个数据源accout accout.ds.url=jdbc:mysql://127.0.0.1:3306/accout accout.ds.username=root accout.ds.password=123456 #配置第二个数据源trade trade.ds.url=jdbc:mysql://192.168.57.22:3306/trade trade.ds.username=root trade.ds.password=root #启用多数据源支持 mybatis.supportMultiDataSource=true #配置accout mybatis # 数据源前缀 mybatis.multi.accout.dsPrefix=accout.ds # dao包路径,位于此包下的dao会使用accout数据库 mybatis.multi.accout.scanPackage=com.fintech.it.account # 配置为主数据库,多个数据源时只能配置一个主数据库 mybatis.multi.accout.primary=true #配置trade mybatis mybatis.multi.trade.dsPrefix=trade.ds # dao包路径,位于此包下的dao会使用trade数据库 mybatis.multi.trade.scanPackage=com.fintech.it.trade
-
创建
SqlSessionFactory
通过读取上面的配置,初始化多个
SqlSessionFactory
,如果使用spring-boot,可以扩展ImportBeanDefinitionRegistrar
来动态创建. -
扫描
Mapper
同样实现
ImportBeanDefinitionRegistrar
,通过ClassPathMapperScanner
来扫描不同的包,不同的包使用不同的SqlSessionFactory
好的 多谢指导 我去倒腾下 因为我看了当前demo 多数据源这块是没完全实现的 @bohrqiu
@abel533 你写的书里 有多数据源 这块吗 晚上我回去研究下
@bohrqiu 感谢 找了好久 不知道能用不 先试试
@bohrqiu scanPackage可以包含多个包名吗,用什么分隔?
@hipzhang 逗号隔开试试
https://github.com/aaronuu/tk.mybatis.mutil.datasource
具体实现参见这个项目