MyBatis原理分析

2022-09-15 20:30:22 字數 3863 閱讀 3939

參考部落格: 深入理解mybatis原理: 

一 . jdbc的工作流程:

載入資料庫的驅動程式->建立資料連線物件->建立statement物件->執行sql語句->處理返回結果集->關閉資料庫連線

二 . mybatis和資料庫互動的方式

1 . 使用傳統的mybatis提供的api:此方式建立乙個sqlsession物件,根據傳入的statementid和引數運算元據庫

或者sqlsession.update("statementid",parameterobject)等來實現對資料庫的操作。

三 . sqlsession的工作過程分析

1.開啟乙個資料庫訪問會話---建立sqlsession物件:mybatis使用sqlsession物件來封裝一次資料庫的會話訪問。通過該物件實現對事務的控制和資料查詢。

sqlsession sqlsession = factory.opensession();

3.mybatis執行器executor根據sqlsession傳遞的引數執行query()方法。executor.query()方法會建立乙個statementhandler物件,然後將必要的引數傳遞給statementhandler,使用statementhandler來完成對資料庫的查詢,最終返回list結果集。

executor的功能和作用是:

(1)、根據傳遞的引數,完成sql語句的動態解析,生成boundsql物件,供statementhandler使用;

(2)、為查詢建立快取,以提高效能;

(3)、建立jdbc的statement連線物件,傳遞給statementhandler物件,返回list查詢結果。

4.statementhandler物件負責設定statement物件中的查詢引數、處理jdbc返回的resultset,將resultset加工為list 集合返回:statementhandler物件主要完成兩個工作:

(1). 對於jdbc的preparedstatement型別的物件,建立的過程中,sql語句字串會包含 若干個`?` 佔位符,之後再對佔位符進行設值。statementhandler通過parameterize(statement)方法對statement進行設值;

(2).statementhandler通過listquery(statement statement, resulthandler resulthandler)方法來完成執行statement,和將statement物件返回的resultset封裝成list;

5.statementhandler 的parameterize(statement)方法呼叫了parameterhandler的setparameters(statement)方法,

6.parameterhandler的setparameters(statement)方法負責 根據我們輸入的引數,對statement物件的` ? `佔位符處進行賦值。

statementhandler 的listquery(statement statement, resulthandler resulthandler)方法呼叫了resultsethandler的handleresultsets(statement)方法。resultsethandler的handleresultsets(statement)方法會將statement語句執行後生成的resultset 結果集轉換成list結果集.

參考部落格: 深入理解mybatis原理: 

一 . jdbc的工作流程:

載入資料庫的驅動程式->建立資料連線物件->建立statement物件->執行sql語句->處理返回結果集->關閉資料庫連線

二 . mybatis和資料庫互動的方式

1 . 使用傳統的mybatis提供的api:此方式建立乙個sqlsession物件,根據傳入的statementid和引數運算元據庫

或者sqlsession.update("statementid",parameterobject)等來實現對資料庫的操作。

三 . sqlsession的工作過程分析

1.開啟乙個資料庫訪問會話---建立sqlsession物件:mybatis使用sqlsession物件來封裝一次資料庫的會話訪問。通過該物件實現對事務的控制和資料查詢。

sqlsession sqlsession = factory.opensession();

3.mybatis執行器executor根據sqlsession傳遞的引數執行query()方法。executor.query()方法會建立乙個statementhandler物件,然後將必要的引數傳遞給statementhandler,使用statementhandler來完成對資料庫的查詢,最終返回list結果集。

executor的功能和作用是:

(1)、根據傳遞的引數,完成sql語句的動態解析,生成boundsql物件,供statementhandler使用;

(2)、為查詢建立快取,以提高效能;

(3)、建立jdbc的statement連線物件,傳遞給statementhandler物件,返回list查詢結果。

4.statementhandler物件負責設定statement物件中的查詢引數、處理jdbc返回的resultset,將resultset加工為list 集合返回:statementhandler物件主要完成兩個工作:

(1). 對於jdbc的preparedstatement型別的物件,建立的過程中,sql語句字串會包含 若干個`?` 佔位符,之後再對佔位符進行設值。statementhandler通過parameterize(statement)方法對statement進行設值;

(2).statementhandler通過listquery(statement statement, resulthandler resulthandler)方法來完成執行statement,和將statement物件返回的resultset封裝成list;

5.statementhandler 的parameterize(statement)方法呼叫了parameterhandler的setparameters(statement)方法,

6.parameterhandler的setparameters(statement)方法負責 根據我們輸入的引數,對statement物件的` ? `佔位符處進行賦值。

statementhandler 的listquery(statement statement, resulthandler resulthandler)方法呼叫了resultsethandler的handleresultsets(statement)方法。resultsethandler的handleresultsets(statement)方法會將statement語句執行後生成的resultset 結果集轉換成list結果集.

MyBatis原理分析

參考部落格 深入理解mybatis原理 一 jdbc的工作流程 載入資料庫的驅動程式 建立資料連線物件 建立statement物件 執行sql語句 處理返回結果集 關閉資料庫連線 二 mybatis和資料庫互動的方式 1 使用傳統的mybatis提供的api 此方式建立乙個sqlsession物件,...

Mybatis工作原理分析(一)

當我們在使用mybatis時,我們通常會和spring一起使用,就會使用以下配置方式,從而使用mybatis mybatis框架 在單獨使用mybatis時,原始碼進行分析 1 mybatis將配置檔案儲存到configuration物件中,作用是將配置檔案載入到記憶體中,加快配置檔案的讀取速度 i...

mybatis原理分析 一 JDBC

4.statement特點 使用過mybatis的都清楚底層封裝了jdbc的操作,將繁瑣的jdbc的操作給遮蔽了。所以分析mybatis的原理之前,先來看看jdbc是如何工作的,statement有哪些特點。jdbc是由sun公司提出的一些列規範,只定義了介面規範,具體實現由各個資料庫廠商去實現,它...