1. 程式人生 > >mybatis原始碼閱讀記錄

mybatis原始碼閱讀記錄

文章目錄

書名

深入淺出MyBatis 技術原理與實戰
楊開振著

這裡講了基本api和部分mybaits的原始碼導讀非常推薦

#大體結構
SqlSessionFactory (defaultSqlSessionFactory)構建SqlSession
configuration xml檔案的記憶體表達

MappedStatement:儲存mapper裡面的一個節點(select,insert,delete,update)
sqlSource:提供boundSql物件的地方 是mappedStatement的一個屬性
BoundSql:建立sql 和引數的地方,三個常用資料 sql,parameterOjbect,parameterMappings

MapperProxy是mapper的執行代理,重要函式式execute,對於select語句一般執行者是executeformany

#SqlSession下的四個物件
Executor 執行器,用來排程StatementHandler,ParameterHandler,resultHandler來執行對應的sql
StatementHandler:使用資料庫的statement(preparedStatement)執行操作
ParameterHandler 用於sql對引數的處理
ResultHandler 對結果集ResultSet進行封裝返回

##Executor
simple ,簡單執行器 預設的
reuse,
batch,

##simpleExecutor 核心方法 doQuery
用於獲取StatementHandler,並且對StatementHandler進行引數初始化,然後執行具體查詢.
##StatementHandler
RoutingStatementHandler是一個代理物件,真正的handler會有三個,分別對應三個執行器
simpleStatementHandler preparedstatementhandler,callablestatementandler,
對常用的是handler是(preparedstatementhandler)
在 handler裡面的query方法中,會呼叫resultsethandler對結果進行包裝.

##引數處理器parameterhandler
實現類defaultparameterhandler
##結果處理器resultsethandler
實現類defaultresultsethandler
這裡會涉及到懶載入,作者沒有講

#sqlsession執行總結
在這裡插入圖片描述

可以看到statmenthandler是mybaits裡面的核心內容…