abel533 / mapper-boot-starter

mapper-boot-starter
MIT License
111 stars 46 forks source link

多数据源的配置可以更具体一点吗 #9

Open vinplezhang opened 6 years ago

vinplezhang commented 6 years ago

mapper.mappers[0]=tk.mybatis.sample.mapper.BaseMapper mapper.mappers[1]=tk.mybatis.mapper.common.Mapper 这里两组如何对应不同的jdbc配置

我看到 MapperAutoConfiguration里的List sqlSessionFactoryList; 就跟不下去了

vinplezhang commented 6 years ago

@abel533 @bohrqiu

bohrqiu commented 6 years ago

多数据源的配置和mapper没有关系。我说下我们这边如何实现的:

  1. 下面是我们提供的配置项,供开发人员使用

    #配置第一个数据源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
  2. 创建SqlSessionFactory

    通过读取上面的配置,初始化多个SqlSessionFactory,如果使用spring-boot,可以扩展ImportBeanDefinitionRegistrar来动态创建.

  3. 扫描Mapper

    同样实现ImportBeanDefinitionRegistrar,通过ClassPathMapperScanner来扫描不同的包,不同的包使用不同的SqlSessionFactory

vinplezhang commented 6 years ago

好的 多谢指导 我去倒腾下 因为我看了当前demo 多数据源这块是没完全实现的 @bohrqiu

vinplezhang commented 6 years ago

@abel533 你写的书里 有多数据源 这块吗 晚上我回去研究下

hipzhang commented 6 years ago

@bohrqiu 感谢 找了好久 不知道能用不 先试试

hipzhang commented 6 years ago

@bohrqiu scanPackage可以包含多个包名吗,用什么分隔?

abel533 commented 6 years ago

@hipzhang 逗号隔开试试

aaronuu commented 6 years ago

https://github.com/aaronuu/tk.mybatis.mutil.datasource

具体实现参见这个项目