項目背景:項目開發(fā)中數據庫使用了讀寫分離,所有查詢語句走從庫,除此之外走主庫。

最簡單的辦法其實就是建兩個包,把之前數據源那一套配置copy一份,指向另外的包,但是這樣擴展很有限,所有采用下面的辦法。

參考了兩篇文章如下:

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

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

這兩篇文章都對原理進行了分析,下面只寫自己的實現過程其他不再敘述。

實現思路是:

第一步,實現動態(tài)切換數據源:配置兩個DataSource,配置兩個SqlSessionFactory指向兩個不同的DataSource,兩個SqlSessionFactory都用一個SqlSessionTemplate,同時重寫Mybatis提供的SqlSessionTemplate類,最后配置Mybatis自動掃描。

第二步,利用aop切面,攔截dao層所有方法,因為dao層方法命名的特點,比如所有查詢sql都是select開頭,或者get開頭等等,攔截這些方法,并把當前數據源切換至從庫。

spring中配置如下:

延伸閱讀

學習是年輕人改變自己的最好方式-Java培訓,做最負責任的教育,學習改變命運,軟件學習,再就業(yè),大學生如何就業(yè),幫大學生找到好工作,lphotoshop培訓,電腦培訓,電腦維修培訓,移動軟件開發(fā)培訓,網站設計培訓,網站建設培訓學習是年輕人改變自己的最好方式