mybatis 多數(shù)據(jù)源配置

mybatis官方文檔

MyBatis 可以配置成適應(yīng)多種環(huán)境载庭,這種機(jī)制有助于將 SQL 映射應(yīng)用于多種數(shù)據(jù)庫(kù)之中, 現(xiàn)實(shí)情況下有多種理由需要這么做廊佩。例如囚聚,開(kāi)發(fā)、測(cè)試和生產(chǎn)環(huán)境需要有不同的配置标锄;或者共享相同 Schema 的多個(gè)生產(chǎn)數(shù)據(jù)庫(kù)顽铸, 想使用相同的 SQL 映射。許多類似的用例料皇。
不過(guò)要記孜剿伞:盡管可以配置多個(gè)環(huán)境,每個(gè) SqlSessionFactory 實(shí)例只能選擇其一践剂。
所以毒返,如果你想連接兩個(gè)數(shù)據(jù)庫(kù),就需要?jiǎng)?chuàng)建兩個(gè) SqlSessionFactory 實(shí)例舷手,每個(gè)數(shù)據(jù)庫(kù)對(duì)應(yīng)一個(gè)。而如果是三個(gè)數(shù)據(jù)庫(kù)劲绪,就需要三個(gè)實(shí)例男窟,依此類推盆赤,記起來(lái)很簡(jiǎn)單:
每個(gè)數(shù)據(jù)庫(kù)對(duì)應(yīng)一個(gè) SqlSessionFactory 實(shí)例

所以在使用mybatis + spring時(shí),應(yīng)配置兩個(gè)數(shù)據(jù)源(datasource),每個(gè)數(shù)據(jù)源對(duì)應(yīng)一個(gè)SqlSessionFactory歉眷,然后為不同的SqlSessionFactory配置不同的
<mybatis:scan base-package ../>即可牺六,要注意的的是,base-package范圍小的需要放在配置文件前面
例子:

<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xmlns="http://www.springframework.org/schema/beans" xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:mybatis="http://mybatis.org/schema/mybatis-spring"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
       http://www.springframework.org/schema/tx
       http://www.springframework.org/schema/tx/spring-tx-4.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd http://mybatis.org/schema/mybatis-spring http://mybatis.org/schema/mybatis-spring.xsd">

    <!-- 配置數(shù)據(jù)源 -->
    <bean id="dataSourceChain" class="com.mchange.v2.c3p0.ComboPooledDataSource"
          destroy-method="close">
        <property name="driverClass" value="${ac.jdbc.driverClassName}"/>
        <property name="jdbcUrl" value="${ac.chain.jdbc.url}"/>
        <property name="user" value="${ac.chain.jdbc.username}"/>
        <property name="password" value="${ac.chain.jdbc.password}"/>
        <property name="minPoolSize" value="${ac.jdbc.miniPoolSize}"/>
        <property name="maxPoolSize" value="${ac.jdbc.maxPoolSize}"/>
        <property name="initialPoolSize" value="${ac.jdbc.initialPoolSize}"/>
        <property name="maxIdleTime" value="${ac.jdbc.maxIdleTime}"/>
        <property name="acquireIncrement" value="${ac.jdbc.acquireIncrement}"/>

        <property name="acquireRetryAttempts" value="${ac.jdbc.acquireRetryAttempts}"/>
        <property name="acquireRetryDelay" value="${ac.jdbc.acquireRetryDelay}"/>
        <property name="testConnectionOnCheckin" value="${ac.jdbc.testConnectionOnCheckin}"/>
        <property name="automaticTestTable" value="${ac.jdbc.automaticTestTable}"/>
        <property name="idleConnectionTestPeriod" value="${ac.jdbc.idleConnectionTestPeriod}"/>
        <property name="checkoutTimeout" value="${ac.jdbc.checkoutTimeout}"/>
    </bean>

    <!--- 第二個(gè)數(shù)據(jù)源 -->

    <bean id="dataSourceApp" class="com.mchange.v2.c3p0.ComboPooledDataSource"
          destroy-method="close">
        <property name="driverClass" value="${ac.jdbc.driverClassName}"/>
        <property name="jdbcUrl" value="${ac.app.jdbc.url}"/>
        <property name="user" value="${ac.app.jdbc.username}"/>
        <property name="password" value="${ac.app.jdbc.password}"/>
        <property name="minPoolSize" value="${ac.jdbc.miniPoolSize}"/>
        <property name="maxPoolSize" value="${ac.jdbc.slave.maxPoolSize}"/>
        <property name="initialPoolSize" value="${ac.jdbc.initialPoolSize}"/>
        <property name="maxIdleTime" value="${ac.jdbc.maxIdleTime}"/>
        <property name="acquireIncrement" value="${ac.jdbc.acquireIncrement}"/>

        <property name="acquireRetryAttempts" value="${ac.jdbc.acquireRetryAttempts}"/>
        <property name="acquireRetryDelay" value="${ac.jdbc.acquireRetryDelay}"/>
        <property name="testConnectionOnCheckin" value="${ac.jdbc.testConnectionOnCheckin}"/>
        <property name="automaticTestTable" value="${ac.jdbc.automaticTestTable}"/>
        <property name="idleConnectionTestPeriod" value="${ac.jdbc.idleConnectionTestPeriod}"/>
        <property name="checkoutTimeout" value="${ac.jdbc.checkoutTimeout}"/>
    </bean>


    <mybatis:scan base-package="com.petkit.ac.adaptor.mapper.chain" factory-ref="mybatisSqlSessionFactoryChain" />
    <bean id="mybatisSqlSessionFactoryChain" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSourceChain"/>
        <property name="configLocation" value="classpath:/mybatis-config.xml"/>
        <property name="mapperLocations" value="classpath*:/config/mapper/chain/*.xml"/>
    </bean>

    <mybatis:scan base-package="com.petkit.ac.adaptor.mapper.app" factory-ref="mybatisSqlSessionFactoryApp" />
    <bean id="mybatisSqlSessionFactoryApp" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSourceApp"/>
        <property name="configLocation" value="classpath:/mybatis-config.xml"/>
        <property name="mapperLocations" value="classpath*:/config/mapper/app/*.xml"/>
    </bean>

</beans>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末汗捡,一起剝皮案震驚了整個(gè)濱河市淑际,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌扇住,老刑警劉巖春缕,帶你破解...
    沈念sama閱讀 211,948評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異艘蹋,居然都是意外死亡锄贼,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,371評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門女阀,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)宅荤,“玉大人,你說(shuō)我怎么就攤上這事浸策》爰” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,490評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵庸汗,是天一觀的道長(zhǎng)惫确。 經(jīng)常有香客問(wèn)我,道長(zhǎng)夫晌,這世上最難降的妖魔是什么雕薪? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,521評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮晓淀,結(jié)果婚禮上所袁,老公的妹妹穿的比我還像新娘。我一直安慰自己凶掰,他們只是感情好燥爷,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,627評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著懦窘,像睡著了一般前翎。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上畅涂,一...
    開(kāi)封第一講書(shū)人閱讀 49,842評(píng)論 1 290
  • 那天港华,我揣著相機(jī)與錄音,去河邊找鬼午衰。 笑死立宜,一個(gè)胖子當(dāng)著我的面吹牛冒萄,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播橙数,決...
    沈念sama閱讀 38,997評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼尊流,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了灯帮?” 一聲冷哼從身側(cè)響起崖技,我...
    開(kāi)封第一講書(shū)人閱讀 37,741評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎钟哥,沒(méi)想到半個(gè)月后迎献,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,203評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,534評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了介牙。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,673評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡践盼,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出宾巍,到底是詐尸還是另有隱情咕幻,我是刑警寧澤,帶...
    沈念sama閱讀 34,339評(píng)論 4 330
  • 正文 年R本政府宣布顶霞,位于F島的核電站肄程,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏选浑。R本人自食惡果不足惜蓝厌,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,955評(píng)論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望古徒。 院中可真熱鬧拓提,春花似錦、人聲如沸隧膘。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,770評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)疹吃。三九已至蹦疑,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間萨驶,已是汗流浹背歉摧。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,000評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人叁温。 一個(gè)月前我還...
    沈念sama閱讀 46,394評(píng)論 2 360
  • 正文 我出身青樓豆挽,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親券盅。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,562評(píng)論 2 349

推薦閱讀更多精彩內(nèi)容

  • 現(xiàn)在一般的應(yīng)用都會(huì)有多個(gè)數(shù)據(jù)源.SpringBoot結(jié)合Mybatis的使用可以大大方便開(kāi)發(fā)者對(duì)SQL的開(kāi)發(fā).所以...
    StephenZ閱讀 3,263評(píng)論 0 5
  • Java數(shù)據(jù)持久化之mybatis 一. mybatis簡(jiǎn)介 1.1 原始的JDBC操作: Java 通過(guò) Jav...
    小Q逛逛閱讀 4,903評(píng)論 0 16
  • 1. 簡(jiǎn)介 1.1 什么是 MyBatis 膛檀? MyBatis 是支持定制化 SQL锰镀、存儲(chǔ)過(guò)程以及高級(jí)映射的優(yōu)秀的...
    笨鳥(niǎo)慢飛閱讀 5,457評(píng)論 0 4
  • Spring+Mybatis的多數(shù)據(jù)源配置。 上午接到一個(gè)需求咖刃,在一個(gè)項(xiàng)目中增加一個(gè)數(shù)據(jù)源的配置泳炉。某些方法在操作的...
    lothar_cly閱讀 12,303評(píng)論 5 9
  • 最近由于項(xiàng)目中需要同時(shí)連接兩個(gè)數(shù)據(jù)庫(kù),所以需要配置多個(gè)數(shù)據(jù)源嚎杨,由于springboot 默認(rèn)幫我們做了很多自動(dòng)配置...
    freelands閱讀 14,467評(píng)論 8 23