Mybatis中使用dao實現類的執行過程分析——斷點調試和跟蹤源碼技能


mybatis中使用dao實現類的執行過程分析

斷點調試和跟蹤源碼技能

1.在實現類和測試類中打斷點
1583310192943

1583310240709

2.啟用debug調試,下一步得到實現類

1583310384535

3.選中SqlSession,右鍵單擊

1583310492308

4.選中SqlSession,右鍵單擊,選擇Show Implementations顯示它的所有實現,通過斷點調試,我們知道選擇DefaultSqlSession

1583310654563

5.當我們選中DefaultSqlSession,上方會有顯示,然后雙擊

1583310951769

6.進到DefaultSqlSession中,找到我們在findAll()中調用的selectList,發現最終執行的是SqlSession的selectList方法,在這個方法中找到executor的query方法

1583311599389

7.發現Executor又是一個接口,繼續打斷點,找實現類到底是哪一個

1583311768117

8.斷點調試,得知Executor的實現類是CachingExecutor
1583312026792

9.由此通過diagram找到CachingExecutor

1583312301701

10.打開CachingExecutor,在query中打斷點,調試下一步,可以進到此處。又發現一個query方法

1583312500604

11.繼續打斷點,debug下一步進到此處

1583312618513

12.接下來在這兩處打斷點,繼續下一步調試,發現走的第二行。

1583312770267

13.由delegate找到SimpleExecutor,所以在Executor類圖中選擇SimpleExecutor

1583313118916

14.打開SimpleExecutor,找到queryFromDatabase方法

1583313294884

15.queryFromDatabase方法中有doQuery方法,跟進,發現這是一個抽象方法

1583313457870

所以最終執行的是SimpleExecutor的doQuery方法

❤️非常重要的一張圖-分析編寫dao實現類Mybatis的執行過程(在新標簽中打開圖片查看)

非常重要的一張圖-分析編寫dao實現類Mybatis的執行過程

❤️非常重要的一張圖-分析代理dao的執行過程



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM