我在我的应用程序中使用MyBatis和Spring Integration。我们公司有几个Oracle数据库。一个查询必须在一个数据库中执行,另一个必须在其他数据库中执行。如何配置MyBatis以使用不同的数据库连接来进行不同的查询?
答案 0 :(得分:0)
这是MyBatis 3用户指南中涵盖的第一个主题之一。基本上,您应该为每个数据库配备几个XML配置文件。最简单的方法是通过传递配置来创建映射器
String resource = "org/mybatis/example/Configuration.xml";
Reader reader = Resources.getResourceAsReader(resource);
sqlMapper = new SqlSessionFactoryBuilder().build(reader);
编辑: 对不起,没仔细看过。无论如何,我相信代码snipet是自我解释的:
<jee:jndi-lookup id="jndiDatabase1" jndi-name="jdbc/database1"/>
<jee:jndi-lookup id="jndiDatabase2" jndi-name="jdbc/database2"/>
<bean id="database1" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="configLocation" value="classpath:/some/path/to/database1Config.xml"/>
<property name="dataSource" ref="jndiDatabase1"/>
</bean>
<bean id="database2" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="configLocation" value="classpath:/some/path/to/database2Config.xml"/>
<property name="dataSource" ref="jndiDatabase2"/>
</bean>
答案 1 :(得分:0)
如果正在寻找支持不同类型的数据库,我的答案就是为此 从Mybatis 3开始,它在内部支持多数据。有关详细配置,请参阅官方文档at here。
以下是如何使用Spring配置它
<bean id="vendorProperties" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
<property name="properties">
<props>
<prop key="SQL Server">sqlserver</prop>
<prop key="DB2">db2</prop>
<prop key="Oracle">oracle</prop>
<prop key="MySQL">mysql</prop>
</props>
</property>
</bean>
<bean id="databaseIdProvider" class="org.apache.ibatis.mapping.VendorDatabaseIdProvider">
<property name="properties" ref="vendorProperties"/>
</bean>
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="databaseIdProvider" ref="databaseIdProvider" />
</bean>