[英]How to configure 2 databases in MyBatis using MyBatis-Spring
我试图根据需要在我的应用程序中配置2个不同的数据源。
我在AppContext.xml中的配置如下:
<bean id="dataSourceA" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.ibm.db2.jcc.DB2Driver"/>
<property name="url" value="datasourceAURL"/>
<property name="username" value="aaaa"/>
<property name="password" value="pppp"/>
</bean>
<bean id="dataSourceB" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.ibm.db2.jcc.DB2Driver"/>
<property name="url" value="datasourceBURL"/>
<property name="username" value="bbbb"/>
<property name="password" value="cccc"/>
</bean>
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com/ex/myBatis/mappings" />
</bean>
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSourceA" />
<property name="typeAliasesPackage" value="com.ex.myBatis.entities"/>
</bean>
<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg index="0" ref="sqlSessionFactory" />
</bean>
<bean id="sqlSessionFactory1" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="configDataSource" />
<property name="typeAliasesPackage" value="com.ex.myBatis.entities"/>
</bean>
<bean id="sqlSession1" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg index="0" ref="sqlSessionFactory1" />
</bean>
<bean id="callService" class="com.ex.myBatis.Service.callService">
<property name="sqlSession" ref="sqlSession1" />
</bean>
但是在访问bean时,我得到了下面的异常
org.springframework.beans.factory.BeanCreationException:创建名称为'callService'的bean时出错:自动连接依赖项的注入失败; 嵌套异常是org.springframework.beans.factory.BeanCreationException:无法自动装配方法:public final void org.mybatis.spring.support.SqlSessionDaoSupport.setSqlSessionTemplate(org.mybatis.spring.SqlSessionTemplate); 嵌套的异常是org.springframework.beans.factory.NoUniqueBeanDefinitionException:没有定义类型为[org.mybatis.spring.SqlSessionTemplate]的合格bean:期望的单个匹配bean,但找到了2:sqlSession,sqlSession1
请有人帮助我解决问题。 另外,如果还有其他方法可以配置2个数据源,请也建议我。
您的配置基本上是正确的。 您面临的问题是您使用自动装配来注入callService
依赖项之一。
似乎您使用的是SqlSessionDaoSupport
并且它的sqlSessionTemplate字段是自动装配的。 定义了两个模板,因此spring无法自动连接依赖项。 您需要手动指定正确的模板。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.