2

我在我的应用程序中使用 MyBatis 和 Spring Integration。我们公司有几个 Oracle 数据库。一个查询必须在一个数据库中执行,另一个查询必须在另一个数据库中执行。如何配置 MyBatis 使用不同的数据库连接来进行不同的查询?

4

2 回答 2

0

这是 MyBatis 3 用户指南中首先涉及的主题之一。基本上,每个数据库都应该有几个 XML 配置文件。最简单的方法是通过传递配置来创建映射器

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>
于 2013-02-21T09:50:40.620 回答
0

如果有人正在寻找支持不同类型的数据库,我的答案就是这样。
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>
于 2013-06-25T07:59:28.093 回答