我在我的应用程序中使用MyBatis和Spring Integration。我们公司有几个Oracle数据库。一个查询必须在一个数据库中执行,另一个查询必须在另一个数据库中执行。如何配置MyBatis,以便对不同的查询使用不同的数据库连接?
afdcj2ne1#
这是MyBatis 3用户指南中首先涉及的主题之一。基本上,每个数据库都应该有两个XML配置文件。最简单的方法是通过传递配置来创建Map器
String resource = "org/mybatis/example/Configuration.xml"; Reader reader = Resources.getResourceAsReader(resource); sqlMapper = new SqlSessionFactoryBuilder().build(reader);
编辑:对不起,我没有仔细阅读。无论如何,我相信代码片段是不言自明的:
<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>
kx5bkwkv2#
如果一个人正在寻找支持不同类型的数据库,我的答案就是这样。从Mybatis 3开始,它内部支持多数据。有关详细配置,请参阅此处的官方文档。下面是如何用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>
2条答案
按热度按时间afdcj2ne1#
这是MyBatis 3用户指南中首先涉及的主题之一。基本上,每个数据库都应该有两个XML配置文件。最简单的方法是通过传递配置来创建Map器
编辑:对不起,我没有仔细阅读。无论如何,我相信代码片段是不言自明的:
kx5bkwkv2#
如果一个人正在寻找支持不同类型的数据库,我的答案就是这样。
从Mybatis 3开始,它内部支持多数据。有关详细配置,请参阅此处的官方文档。
下面是如何用Spring配置它