MyBatis 原始碼解讀 帶著問題去看原始碼

2021-10-11 16:34:29 字數 732 閱讀 8234

分析原始碼,我們還是從程式設計式的demo 入手。spring 的整合我們會在後面講到。

inputstream inputstream = resources.getresourceasstream(resource);

sqlsessionfactory sqlsessionfactory = new sqlsessionfactorybuilder().build(inputstream);

sqlsession session = sqlsessionfactory.opensession();

把檔案讀取成流的這一步我們就省略了。所以下面我們分成四步來分析。

問題:解析的時候怎麼解析的,做了什麼,產生了什麼物件,結果存放到了**。解析的結果決定著我們後面有什麼物件可以使用,和到**去取。

第二步,通過sqlsessionfactory 建立乙個sqlsession。

問題:sqlsession 是用來運算元據庫的,返回了什麼實現類,除了sqlsession,還建立了什麼物件,建立了什麼環境?

第四步,呼叫介面方法。

問題:我們的介面沒有建立實現類,為什麼可以呼叫它的方法?那它呼叫的是什麼方法?它又是根據什麼找到我們要執行的sql 的?也就是介面方法怎麼和xml 對映器裡面的statementid 關聯起來的?

此外,我們的方法引數是怎麼轉換成sql 引數的?獲取到的結果集是怎麼轉換成物件的?

接下來我們就會詳細分析每一步的流程,包括裡面有哪些核心的物件和關鍵的方法。

mybatis原始碼解讀(3)

string resource mybatis config.xml inputstream inputstream resources.getresourceasstream resource sqlsessionfactory sqlsessionfactory new sqlsessionfa...

mybatis原始碼解讀(7)

private void typealiaseselement xnode parent else else catch classnotfoundexception e alias author type domain.blog.author alias blog type domain.blog...

MyBatis 原始碼解讀 配置解析過程

我們從mybatis config.xml 開始。在第一節課的時候我們已經分析了核心配置了,大概明白了mybatis 有哪些配置項,和這些配置項的大致含義。這裡我們再具體看一下這裡面的標籤都是怎麼解析的,解析的時候做了什麼。sqlsessionfactory sqlsessionfactory ne...