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