亚洲欧美日韩综合系列在线_91精品人妻一区二区_欧美大肥婆一级特大AA片_九色91视频免费观看_亚洲综合国产精品_av中文字幕在线不卡_久久精品色综合网_看黄色视频的软件_无卡无码高清中文字幕码2024_亚洲欧美日韩天堂网

mybatis 3.4.6源碼深度解析(一)

來源:個人比較懶 發(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)載請附上博文鏈接!


分享:
評論:
你還沒有登錄,請先