參考部落格: 深入理解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公司提出的一些列規範,只定義了介面規範,具體實現由各個資料庫廠商去實現,它...