2013-02-21 42 views
2

我在我的應用程序中使用MyBatis和Spring Integration。我們公司有幾個Oracle數據庫。一個查詢必須在一個數據庫中執行,另一個必須在其他數據庫中執行。如何配置MyBatis以將不同的數據庫連接用於不同的查詢?如何使用MyBatis Spring集成連接到多個數據庫?

回答

3

我找到答案here。這種解決方案在某些情況下不是最好的,但對我有好處。

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> 
+0

配置它,我用的MyBatis Spring配置和我的代碼不包含Java代碼什麼創造MyBatis的對象。這是我如何配置的SqlSessionFactory: <豆ID = 「SqlSessionFactory中」 類= 「org.mybatis.spring.SqlSessionFactoryBean」> <屬性名= 「數據源」 REF = 「數據源」/> <屬性名=「typeAliasesPackage 「value =」com.llth.paymentgateway.domain「/> 是否可以使用另一個配置的SqlSessionFactoryBean使用另一個數據源? – Tural 2013-02-21 12:31:26

+0

假設我按照您描述的方式配置了dataSources。如何強制映射器中定義的查詢使用它們中的任何一個? – Tural 2013-02-21 16:55:25

+0

鑑於您已經正確配置了MyBatis配置,正如[documentation](http://www.mybatis.org/spring/sqlsession.html)中所述,您可以創建sqlSession bean並將其注入到DAO對象中。 – 2013-02-21 21:14:07

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>