項(xiàng)目背景:項(xiàng)目開發(fā)中數(shù)據(jù)庫使用了讀寫分離,所有查詢語句走從庫,除此之外走主庫。
最簡單的辦法其實(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
這兩篇文章都對原理進(jìn)行了分析,下面只寫自己的實(shí)現(xiàn)過程其他不再敘述。
實(shí)現(xiàn)思路是:
第一步,實(shí)現(xiàn)動態(tài)切換數(shù)據(jù)源:配置兩個(gè)DataSource,配置兩個(gè)SqlSessionFactory指向兩個(gè)不同的DataSource,兩個(gè)SqlSessionFactory都用一個(gè)SqlSessionTemplate,同時(shí)重寫Mybatis提供的SqlSessionTemplate類,最后配置Mybatis自動掃描。
第二步,利用aop切面,攔截dao層所有方法,因?yàn)閐ao層方法命名的特點(diǎn),比如所有查詢sql都是select開頭,或者get開頭等等,攔截這些方法,并把當(dāng)前數(shù)據(jù)源切換至從庫。
spring中配置如下:
延伸閱讀
- ssh框架 2016-09-30
- 阿里移動安全 [無線安全]玩轉(zhuǎn)無線電——不安全的藍(lán)牙鎖 2017-07-26
- 消息隊(duì)列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 論文筆記【圖片目標(biāo)分割】 2017-07-26
- 詞向量-LRWE模型-更好地識別反義詞同義詞 2017-07-26
- 從棧不平衡問題 理解 calling convention 2017-07-26
- php imagemagick 處理 圖片剪切、壓縮、合并、插入文本、背景色透明 2017-07-26
- Swift實(shí)現(xiàn)JSON轉(zhuǎn)Model - HandyJSON使用講解 2017-07-26
- 阿里移動安全 Android端惡意鎖屏勒索應(yīng)用分析 2017-07-26
- 集合結(jié)合數(shù)據(jù)結(jié)構(gòu)來看看(二) 2017-07-26
