采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
假设现在有两个数据源,一个是地址为127.0.0.1:3306的mysql数据源,一个是地址为127.0.0.1:1433的sqlserver数据源,能不能通过调用不同的接口来使用不同的数据源?我尝试在applicationContext-dao.xml中配置多个datasource和sqlsessionfactory不能起效。是不是我的思路不对啊?
是可以配置多个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这个包下的接口,对应两种以上的数据源?
也就是说就是要配置两个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路径"/> 是不是这样写的?
是的,具体细节上可能还会有问题,你参考一下: http://blog.csdn.net/tangtong1/article/details/51038056 网上这种问题问的人很多,自己也可以搜一下。
谢谢答主解惑
登录后可查看更多问答,登录/注册
【毕设】SSM全面梳理,前后端分离,zTree 和复杂SQL打造权限系统,解惑MyBatis和RESTful
2.7k 3
1.5k 3
2.9k 5
1.1k 43
1.1k 24
购课补贴联系客服咨询优惠详情
慕课网APP您的移动学习伙伴
扫描二维码关注慕课网微信公众号