MyBatis 四大組件之StatementHandler

StatementHandler是四大組件最重要的一個(gè)對(duì)象,負(fù)責(zé)操作Statement對(duì)象與數(shù)據(jù)庫(kù)進(jìn)行交流,在工作時(shí)還會(huì)使用ParameterHandler 和 ResultSetHandler 對(duì)參數(shù)進(jìn)行映射,對(duì)結(jié)果進(jìn)行實(shí)體類的綁定

MyBatis 四大組件之StatementHandler

我們?cè)诖罱ㄔ鶭DBC的時(shí)候,會(huì)有這樣一行代碼

Statement stmt=conn.createStatement();//

也可以使用PreparedStatement來(lái)做

這行代碼創(chuàng)建的 Statement 對(duì)象或者是 PreparedStatement 對(duì)象就是由StatementHandler進(jìn)行管理的。


prepare: 用于創(chuàng)建一個(gè)具體的 Statement 對(duì)象的實(shí)現(xiàn)類或者是 Statement 對(duì)象

parametersize: 用于初始化 Statement 對(duì)象以及對(duì)sql的占位符進(jìn)行賦值

update: 用于通知 Statement 對(duì)象將 insert、update、delete 操作推送到數(shù)據(jù)庫(kù)

query: 用于通知 Statement 對(duì)象將 select 操作推送數(shù)據(jù)庫(kù)并返回對(duì)應(yīng)的查詢結(jié)果

StatementHandler的繼承結(jié)構(gòu)


RoutingStatementHandler: RoutingStatementHandler 并沒(méi)有對(duì) Statement 對(duì)象進(jìn)行使用,只是根據(jù)StatementType 來(lái)創(chuàng)建一個(gè)代理,代理的就是對(duì)應(yīng)Handler的三種實(shí)現(xiàn)類。在MyBatis工作時(shí),使用的StatementHandler 接口對(duì)象實(shí)際上就是 RoutingStatementHandler 對(duì)象。

BaseStatementHandler: 是 StatementHandler 接口的另一個(gè)實(shí)現(xiàn)類.本身是一個(gè)抽象類.用于簡(jiǎn)化StatementHandler 接口實(shí)現(xiàn)的難度,屬于適配器設(shè)計(jì)模式體現(xiàn),它主要有三個(gè)實(shí)現(xiàn)類

SimpleStatementHandler:管理Statement對(duì)象并且向數(shù)據(jù)庫(kù)推送不需要預(yù)編譯SQL語(yǔ)句

PreparedStatementHandler:管理Statement對(duì)象并且向數(shù)據(jù)庫(kù)推送需要預(yù)編譯SQL語(yǔ)句

CallableStatementHandler:管理Statement對(duì)象并且調(diào)用數(shù)據(jù)庫(kù)的存儲(chǔ)過(guò)程

StatementHandler 對(duì)象創(chuàng)建以及源碼分析

Configuration 中的 newStatementHandler 是由執(zhí)行器中的查詢、更新(插入、更新、刪除)方法來(lái)提供的,StatementHandler 其實(shí)就是由 Executor 負(fù)責(zé)管理和創(chuàng)建的

query方法:

Update方法:


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容