近期準(zhǔn)備做一下Mybatis的源碼解讀栋豫,整個(gè)系列大概會(huì)有6-7篇文章挤安。
先釋放一下目錄:
1.Mybatis框架組件設(shè)計(jì)&頂層接口
2.Mybatis框架啟動(dòng)流程分析
3.Mybatis框架源碼Configuration分析
4.Mybatis框架一條插入語句的執(zhí)行流程
5.Mybatis框架從源碼角度來講執(zhí)行增,刪,改的時(shí)候如何保證線程安全?
6.Mybatis框架一條查詢語句的執(zhí)行流程
7.Mybatis的日志&異常體系
8.Mybatis與Spring集成過程
9.Mybatis的CRUD代碼生成
本章主要說明Mybatis框架一條查詢語句的執(zhí)行流程丧鸯,之前在《Mybatis框架一條插入語句的執(zhí)行流程》文章中介紹了一條插入語句的執(zhí)行流程漱受,這里筆者在跟蹤源碼的過程中發(fā)現(xiàn)查詢語句與插入語句有些不太一樣的地方。這里先放一張流程圖:
MybatisQuerySqlSequence.png
下面我們從MapperMethod開始進(jìn)行源碼分析:
MapperMethod入口.png
最明顯的區(qū)別就是查詢需要對(duì)結(jié)果集進(jìn)行處理骡送,針對(duì)不同的場(chǎng)景進(jìn)行結(jié)果集的封裝,結(jié)果集轉(zhuǎn)換絮记。
executeForMany.png
executeForMap.png
query.png
queryFromDataBase.png
statementHandlerQuery.png
最后resultSetHandler會(huì)進(jìn)行結(jié)果集的映射摔踱,這塊的源碼相對(duì)復(fù)雜點(diǎn)。大家可以跟進(jìn)源碼看看怨愤。