來源:個人比較懶 發(fā)布時間:2018-11-01 10:19:56 閱讀量:1158
文章目錄
1 概述
1.1 環(huán)境搭建
1.2 項目層次結(jié)構(gòu)介紹
1 概述
MyBatis 是一款優(yōu)秀的持久層框架,它支持定制化 SQL、存儲過程以及高級映射。MyBatis 避免了幾乎所有的 JDBC 代碼和手動設(shè)置參數(shù)以及獲取結(jié)果集,其通過XML配置的方式消除了絕大部分JDBC重復代碼以及參數(shù)的設(shè)置,結(jié)果集的映射。作為開發(fā)人員,為了更好地學習和,有必要深入研究了解優(yōu)秀框架的源碼和mybatis的設(shè)計思路,以便更好的借鑒。同時,可以通過研究源碼,可以更好的領(lǐng)會設(shè)計模式的精髓。
1.1 環(huán)境搭建
可以從git源碼鏈接上面下載mybatis源碼,然后倒入idea,源碼上面我這邊使用的是3.4.6版本的源碼
1.2 項目層次結(jié)構(gòu)介紹
從MyBatis代碼實現(xiàn)的來看,個人認下MyBatis主要包含以下這些核心部件:
SqlSession 作為MyBatis工作的主要頂層API,表示和數(shù)據(jù)庫交互的會話,完成必要數(shù)據(jù)庫增刪改查功能
Executor MyBatis執(zhí)行器,是MyBatis 調(diào)度的核心,負責SQL語句的生成和查詢緩存的維護
StatementHandler 封裝了JDBC Statement操作,負責對JDBC statement 的操作,如設(shè)置參數(shù)、將Statement結(jié)果集轉(zhuǎn)換成List集合。
ParameterHandler 負責對用戶傳遞的參數(shù)轉(zhuǎn)換成JDBC Statement 所需要的參數(shù),
ResultSetHandler 負責將JDBC返回的ResultSet結(jié)果集對象轉(zhuǎn)換成List類型的集合;
TypeHandler 負責java數(shù)據(jù)類型和jdbc數(shù)據(jù)類型之間的映射和轉(zhuǎn)換
MappedStatement MappedStatement維護了一條<select|update|delete|insert>節(jié)點的封裝,
SqlSource 負責根據(jù)用戶傳遞的parameterObject,動態(tài)地生成SQL語句,將信息封裝到BoundSql對象中,并返回
BoundSql 表示動態(tài)生成的SQL語句以及相應(yīng)的參數(shù)信息
Configuration MyBatis所有的配置信息都維持在Configuration對象之中。
MapperProxyFactory 接口代理工廠類這個類主要是試用jdk代理 mapper的實現(xiàn) 以實現(xiàn)調(diào)用SqlSession,接口類名稱對應(yīng)配置文件的nameSpace的值,等標簽的id 對應(yīng)方法名稱
它們之間的關(guān)系(圖片是盜來的):
如果MapperProxyFactory也要加到上面這張圖上去的話,應(yīng)該是要放在最上面了,這個是相當于就是自動實現(xiàn)mapper接口然后在調(diào)用sqlsession中的方法
---------------------
作者:個人比較懶
來源:CSDN
原文:https://blog.csdn.net/Y1230601/article/details/83586303
版權(quán)聲明:本文為博主原創(chuàng)文章,轉(zhuǎn)載請附上博文鏈接!