MyBatis四大物件

2021-08-19 20:13:58 字數 1505 閱讀 5324

mybatis四大物件指的是:executor,statementhandler,parameterhandler和resulthandler物件。這四個物件在sqlsession內部共同協作完成sql語句的執行,同時也是我們自定義外掛程式攔截的四大物件。

sqlsession 首先會呼叫executor.query方法執行查詢。

mybatis生產executor的關鍵**如下:

public object pluginall(object target)   

return target;

}

此處採用責任鏈與jdk動態**模式結合的方式,遍歷的interceptor 即遍歷mybatis的***。責任鏈模式可理解為若干***物件組成一條攔截鍊錶,請求在這個攔截鍊錶一直傳遞,直到鏈上的某一***物件處理此請求,這一模式在servlet的filter和dubbo的filter有用到。不同的是,mybatis責任鏈則是通過動態**的方式,使用plugin**實際的executor類,即plugin(plugin(…(executor)))。

public

class

plugin

implements

invocationhandler

return method.invoke(target, args);

}//對傳入的物件進行**,可能是實際的executor類,也可能是plugin**類

public

static object wrap(object target, interceptor interceptor)

return target;

}}

executor在doquery時生成statementhandler物件

在mybatis實現了statementhandler的有四個類:

routingstatementhandler,這是乙個封裝類,它不提供具體的實現,只是根據executor的型別,建立不同的型別statementhandler。

******statementhandler,這個類對應於jdbc的statement物件,用於沒有預編譯引數的sql的執行。

preparedstatementhandler 這個用於預編譯引數sql的執行。

callablestatementhandler 它將實儲存過程的排程。

statementhandler的主要方法:

prepare:編譯sql

parameterize:prepare後設定引數

query/update:sql執行

基於statementhandler物件定義的外掛程式:

修改sql語句則在預編譯sql(prepare方法前)操作。

修改引數則在呼叫parameterize方法前修改邏輯。或者使用parameterhandler來改造設定引數。

組裝結果集則在query方法前後加入邏輯,或者使用resulthandler來改造組裝結果。

MyBatis四大物件及外掛程式原理

1.四大物件 parameterhandler 處理sql的引數物件 statementhandler 資料庫的處理物件,用於執行sql語句 executor mybatis的執行器,用於執行增刪改查操作 resultsethandler 處理sql的返回結果集 追蹤四大物件的原始碼 org.apa...

JSP四大域物件

web開發中的四個域物件 有 範圍小到大 page jsp有效 page 域指的是 pagecontext.request 一次請求 request 域指的是 session 一次會話 session 域指的是 web應用域指的是 之所以他們是域物件,原因就是他們都內建了map 集合,都有 seta...

Java四大域物件

1.生命週期 當web應用被載入進容器建立代表整個web應用的servletcontext物件,當伺服器關閉或web應用被移除時,servletcontext物件跟著被銷毀。2.作用範圍 整個web應用。3.在不同servlet之間 讀取資源檔案1.生命週期 在service方法呼叫前由伺服器建立,...