以前的項目經歷中,基本上都是spring + hibernate + Spring JDBC這種組合用的多。至于MyBatis,也就這個項目才開始試用,閑話不多說,進入正題。

以前的這種框架組合中,動態數據源切換可謂已經非常成熟了,網上也有非常多的博客介紹,都是繼承AbstractRoutingDataSource,重寫determineCurrentLookupKey()方法。具體做法就不在此廢話了。
所以當項目中碰到這個問題,我幾乎想都沒有想,就采用了這種做法,但是一測試,一點反應都沒有。當時覺得不可能,于是斷點,加log調試,發現determineCurrentLookupKey()根本沒有調用。
為什么列? 這不可能啊。靜下心來,仔細想想,才想到一個關鍵的問題: Mybatis整合Spring,而不是Spring整合的Mybatis! 直覺告訴我,問題就出在這里。
于是花時間去研究一下mybatis-spring.jar 這個包,發現有SqlSession這東西,很本能的就注意到了這一塊,然后大致看一下他的一些實現類。于是就發現了他的實現類里面有一個內部類SqlSessionInterceptor(研究過程就不多說了,畢竟是個痛苦的過程)
好吧,這個類的作用列,就是產生sessionProxy。關鍵代碼如下
final SqlSession sqlSession = getSqlSession( SqlSessionTemplate.this.sqlSessionFactory, SqlSessionTemplate.this.executorType, SqlSessionTemplate.this.exceptionTranslator);
新聞名稱:關于Spring3+Mybatis3整合時多數據源動態切換的問題-創新互聯
網站網址:http://www.yijiale78.com/article26/dpjpjg.html
成都網站建設公司_創新互聯,為您提供標簽優化、外貿網站建設、網站改版、網站設計公司、網站策劃、品牌網站制作
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯