Mybatis原始碼分析

2021-10-08 18:30:34 字數 2096 閱讀 9637

我們都知道mybatis它是一款優秀的持久層框架,它支援定製化sql、儲存過程以及高階對映,幫我們節省了許多時間與精力,今天我們主要來對mybatis的底層原始碼進行分析,主要是以下4行**。

首先呼叫resources中的單個string引數的getresuorceasstream(string resource)方法,傳入mybatis-config.xml檔案。

然後該方法裡面又呼叫了本類中的兩個引數的getresuorceasstream(classloader loader,string resource)方法。

方法,然後這個方法裡面再呼叫了本類中的getresourceasstream(string resource, classloader[ ] classloader)

最後通過對classloader[ ]

陣列進行,然後進行判斷,看類載入器中所讀的流是否為

null,如果不為null,最後

則返回inputstream

物件。

建立完sqlsessionfactorybuilder物件之後,呼叫build(inputstream inputstream)方法。

再呼叫本類帶三個引數的過載的build(inputstream inputstream, string environment, properties properties)方法。

然後建立解析器parser,通過xpath解析的方式去解析mybatis-config.xml 檔案。

把配置檔案的資訊解析並儲存在

configuration物件中,這個configuration物件相當於 mybatis-config.xml 中的配置檔案所對應的類。

最後返回包含

configuration

的defaultsqlsession

物件。

通過之前返回的defaultsqlsessionfactory物件,呼叫它的opensession()方法。

再呼叫本類中的opensessionfromdatasource(executortype exectype, transactionisolationlevel level, boolean autocommit)方法。

建立事務tx,獲取environment資訊,通過environment構建出transactionfactory事務工廠,再通過事務工廠對事物進行設定。

newexecutor(),根據executor在全域性配置中的型別,建立出對應的執行器。如果有二級快取配置開啟,建立cachingexecutor(executor)。

通過executor、事務自動提交以及配置檔案物件(configuration)返回 defaultsqlsession物件。

先通過sqlsessionfactorybuilder去讀取mybatis的配置檔案,然後build乙個defaultsqlsessionfactory。

當我們獲取到sqlsessionfactory之後,就可以通過sqlsessionfactory去獲取sqlsession物件。

獲取到sqlsession物件之後,就可以呼叫sqlsession中一系列的select...,  insert..., update..., delete...方法來進行crud操作。

以上就是個人對mybatis的原始碼的分析理解。

Mybatis 原始碼分析

mybatis解析 2 sqlsessionfactorybean 繼承了 initializingbean 介面,在bean解析的finishbeanfactoryinitialization 的方法對 initializingbean介面中的 afterpropertiesset 方法進行呼叫,...

MyBatis 原始碼分析

sqlsession inte ce,代表乙個連線資料庫的會話,提供了乙個預設的 defaultsqlsession sqlsessionfactory inte ct,建立 sqlsessionfactory 的工廠,提供了預設的 defaultsqlsessionfactory建立 defaul...

MyBatis原始碼分析

將mybatis config.xml加載入inputstream中。呼叫sqlsessionfactotybuilder build 方法,將流傳入其中。sqlsessionfactotybuilder build 方法中有乙個xmlconfigbuilder類解析xml中的內容,封裝為乙個con...