ibitis實現不一樣數據庫之間的鏈接。

碰到了一個需求因爲項目須要鏈接有多個數據庫,因此稍微研究了下ibatis實現鏈接不一樣數據庫,而且不干擾的技術。 spring

第一步 sql

項目裏一般都有jdbc.properties。裏面配置兩個數據源配置。 數據庫

jdbc.driverClassName=oracle.jdbc.driver.OracleDriver
jdbc.url=jdbc:oracle:thin:@127.0.0.1 :1521:orcl
jdbc.username=xxxx
jdbc.password=xxxx apache

h2.driverClassName=org.h2.Driver
h2.url=jdbc:h2:database/h2db
h2.username=xxxx
h2.password=xxxx oracle

第二步, app

在spring中的applicationContext.xml中配置兩個數據庫鏈接源。 url

<bean id="dataSource"
          class="org.apache.commons.dbcp.BasicDataSource"
          destroy-method="close"> <property name="driverClassName" value="${jdbc.driverClassName}"/>
        <property name="url" value="${jdbc.url}"/>
        <property name="username" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
    </bean>
<bean id="dataSourceH2"
          class="org.apache.commons.dbcp.BasicDataSource"
          destroy-method="close">
        <property name="driverClassName" value="${h2.driverClassName}"/>
        <property name="url" value="${h2.url}"/>
        <property name="username" value="${h2.username}"/>
        <property name="password" value="${h2.password}"/>
    </bean>

而後設置對應的關聯關係。 spa

先設置ORACLE的映射關係SqlMapConfig.xml .net


<bean id="sqlMapClient"
          class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
        <property name="configLocation" value="classpath:SqlMapConfig.xml"/>
        <property name="dataSource" ref="dataSource"/>
    </bean>


再設置H2數據庫的映射關係SqlMapConfigByH2.xml code

<bean id="sqlMapClientByH2"
          class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
        <property name="configLocation" value="classpath:SqlMapConfigByH2.xml"/>
        <property name="dataSource" ref="dataSourceH2"/>
    </bean>
事物管理中配置


<bean id="transactionManager"
          class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
         <property name="dataSource" ref="dataSource"/>
         <property name="dataSourceH2" ref="dataSourceH2"/>
    </bean>



第三步、因爲已經配置好了不一樣數據源對應xml因此就能夠在SqlMapConfig.xml配置oralce的sql語句,而在SqlMapConfigByH2.xml配置H2的SQL語句。

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE sqlMapConfig PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN"
        "http://ibatis.apache.org/dtd/sql-map-config-2.dtd">

<sqlMapConfig>
    <settings
            cacheModelsEnabled="true"
            enhancementEnabled="true"
            lazyLoadingEnabled="true"
            maxRequests="20"
            maxSessions="10"
            maxTransactions="50"
            useStatementNamespaces="false"
            />
     <sqlMap resource="com/efunds/tydw/sys/po/users.xml"/>
</sqlMapConfig>

而後在users.xml中就能夠填寫對應的SQL語句了。


我以爲我這種方式耦合度最低,比網上查到的方法要好,因此貼出來做爲筆記

相關文章
相關標籤/搜索