項(xiàng)目背景:項(xiàng)目開(kāi)發(fā)中數(shù)據(jù)庫(kù)使用了讀寫(xiě)分離,所有查詢(xún)語(yǔ)句走從庫(kù),除此之外走主庫(kù)。

最簡(jiǎn)單的辦法其實(shí)就是建兩個(gè)包,把之前數(shù)據(jù)源那一套配置copy一份,指向另外的包,但是這樣擴(kuò)展很有限,所有采用下面的辦法。

參考了兩篇文章如下:

http://blog.csdn.net/zl3450341/article/details/20150687

http://www.blogjava.net/hoojo/archive/2013/10/22/405488.html

這兩篇文章都對(duì)原理進(jìn)行了分析,下面只寫(xiě)自己的實(shí)現(xiàn)過(guò)程其他不再敘述。

實(shí)現(xiàn)思路是:

第一步,實(shí)現(xiàn)動(dòng)態(tài)切換數(shù)據(jù)源:配置兩個(gè)DataSource,配置兩個(gè)SqlSessionFactory指向兩個(gè)不同的DataSource,兩個(gè)SqlSessionFactory都用一個(gè)SqlSessionTemplate,同時(shí)重寫(xiě)Mybatis提供的SqlSessionTemplate類(lèi),最后配置Mybatis自動(dòng)掃描。

第二步,利用aop切面,攔截dao層所有方法,因?yàn)閐ao層方法命名的特點(diǎn),比如所有查詢(xún)sql都是select開(kāi)頭,或者get開(kāi)頭等等,攔截這些方法,并把當(dāng)前數(shù)據(jù)源切換至從庫(kù)。

spring中配置如下:

延伸閱讀

學(xué)習(xí)是年輕人改變自己的最好方式-Java培訓(xùn),做最負(fù)責(zé)任的教育,學(xué)習(xí)改變命運(yùn),軟件學(xué)習(xí),再就業(yè),大學(xué)生如何就業(yè),幫大學(xué)生找到好工作,lphotoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開(kāi)發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)學(xué)習(xí)是年輕人改變自己的最好方式