java動(dòng)態(tài)代理---MyBatis之SqlSessionDaoSupport

在使用mybatis時(shí)我們一般通過繼承SqlSessionDaoSupport然后使用getSqlSession獲取數(shù)據(jù)庫(kù)連接,進(jìn)行數(shù)據(jù)庫(kù)相關(guān)操作。我們查看getSqlSession方法可以看出,這個(gè)方法其實(shí)是返回了一個(gè)SqlSessionTemplate對(duì)象。

接著我們進(jìn)入SqlSessionTemplate的構(gòu)造器中看看,最終發(fā)現(xiàn)最終調(diào)用的都是如下構(gòu)造器。

根據(jù)代碼我們可以看到,最終生成的是一個(gè)sqlSession的動(dòng)態(tài)代理sqlSessionProxy。根據(jù)動(dòng)態(tài)代理構(gòu)造我們可以很容易的看出,最終數(shù)據(jù)庫(kù)相關(guān)操作都封裝在SqlSessionInterceptor的invoke方法中。我們進(jìn)invoke方法中看看。

在invoke方法中我們可以看到,改代理類并無對(duì)原有方法做過多包裝。只是封裝了相關(guān)事物操作。具體執(zhí)行順序如下:

1. 獲取數(shù)據(jù)庫(kù)鏈接,處理相關(guān)sql操作

2. 如果數(shù)據(jù)庫(kù)操作有相應(yīng)事物,則提交事物

3. 若2發(fā)生異常則回滾數(shù)據(jù)庫(kù)操作,并關(guān)閉連接

4. 第四步一定執(zhí)行,如果數(shù)據(jù)庫(kù)鏈接沒有關(guān)閉,則關(guān)閉數(shù)據(jù)庫(kù)鏈接

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 從三月份找實(shí)習(xí)到現(xiàn)在,面了一些公司,掛了不少,但最終還是拿到小米、百度、阿里、京東、新浪、CVTE、樂視家的研發(fā)崗...
    時(shí)芥藍(lán)閱讀 42,813評(píng)論 11 349
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,100評(píng)論 25 709
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,578評(píng)論 19 139
  • 昨天晚上,在“夢(mèng)想之約”的微群里聽了企鵝媽媽的分享,受益匪淺。 分享會(huì)是由Rita組織的。Rita是我學(xué)習(xí)寫作的導(dǎo)...
    晨曦愛讀書閱讀 640評(píng)論 0 1
  • 1、整體分析。 1、1 構(gòu)建交易系統(tǒng),月計(jì)劃總體完成60%。 執(zhí)行奶爸,虧損≤10%:歡樂ETF/全志已經(jīng)執(zhí)行中,...
    crb8閱讀 208評(píng)論 0 0

友情鏈接更多精彩內(nèi)容