请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

如果在spring-mybatis项目中要连接两个或者两个以上的数据源应该如何配置?

假设现在有两个数据源,一个是地址为127.0.0.1:3306的mysql数据源,一个是地址为127.0.0.1:1433的sqlserver数据源,能不能通过调用不同的接口来使用不同的数据源?我尝试在applicationContext-dao.xml中配置多个datasource和sqlsessionfactory不能起效。是不是我的思路不对啊?

正在回答

1回答

是可以配置多个datasource和sqlsessionfactory的,但接下来,你的mybatis的mapper配置、mybatis的dao层接口等,都要对应的配置多个分开,比如:

<!-- 扫描mybatis的SQL配置文件 -->
<property name="mapperLocations" value="classpath:mapper/*.xml"/>

<!-- 扫描Dao接口包 -->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
        <property name="basePackage" value="org.imooc.dao"/>
    </bean>

这里的配置,就是根据你配置的多个sqlSessionFactory来对应多个,basePackage也就要分开了,不然org.imooc.dao这个包下的接口,对应两种以上的数据源?

0 回复 有任何疑惑可以回复我~
  • 提问者 Unlimitedbladewo0 #1
    也就是说就是要配置两个DAO扫描配置,比如:
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
            <property name="sqlSessionFactoryBeanName" value="第一个数据源的sqlSessionFactory"/>
            <property name="basePackage" value="第一个数据源的DAO包"/>
        </bean>
    
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
            <property name="sqlSessionFactoryBeanName" value="第二个数据源的sqlSessionFactory"/>
            <property name="basePackage" value="第二个数据源的DAO包"/>
        </bean>
    
    也就是在applicationContext-dao.xml里面写两个数据源、两个sqlsessionfactory、两个扫描DAO的<bean>。同时两个配置sqlsessionfactory的<bean>里面的<property name="mapperLocations" value="存放sql语句的xml"/>也要分开写成:
    <property name="mapperLocations" value="数据源1的xml路径"/>
    
    <property name="mapperLocations" value="数据源2的xml路径"/>
    
    是不是这样写的?
    回复 有任何疑惑可以回复我~ 2017-06-28 15:23:27
  • 源生活 回复 提问者 Unlimitedbladewo0 #2
    是的,具体细节上可能还会有问题,你参考一下:
    http://blog.csdn.net/tangtong1/article/details/51038056
    网上这种问题问的人很多,自己也可以搜一下。
    回复 有任何疑惑可以回复我~ 2017-06-28 15:34:25
  • 提问者 Unlimitedbladewo0 #3
    谢谢答主解惑
    回复 有任何疑惑可以回复我~ 2017-06-29 10:43:42
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信