国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專(zhuān)注于服務(wù)器技術(shù)及軟件下載分享
分類(lèi)導(dǎo)航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務(wù)器之家 - 編程語(yǔ)言 - JAVA教程 - Mybatis攔截器的實(shí)現(xiàn)介紹

Mybatis攔截器的實(shí)現(xiàn)介紹

2020-06-29 10:59CZengze JAVA教程

MyBatis提供了一種插件(plugin)的功能,雖然叫做插件,但其實(shí)這是攔截器功能。MyBatis 允許你在已映射語(yǔ)句執(zhí)行過(guò)程中的某一點(diǎn)進(jìn)行攔截調(diào)用。下面通過(guò)本文給大家介紹Mybatis攔截器知識(shí),感興趣的朋友一起看看吧

 MyBatis介紹

MyBatis本是apache的一個(gè)開(kāi)源項(xiàng)目iBatis, 2010年這個(gè)項(xiàng)目由apache software foundation 遷移到了google code,并且改名為MyBatis 。它支持普通 SQL查詢(xún),存儲(chǔ)過(guò)程和高級(jí)映射的優(yōu)秀持久層框架。MyBatis 消除了幾乎所有的JDBC代碼和參數(shù)的手工設(shè)置以及結(jié)果集的檢索。MyBatis 使用簡(jiǎn)單的 XML或注解用于配置和原始映射,將接口和 Java 的POJOs(Plain Old Java Objects,普通的Java對(duì)象)映射成數(shù)據(jù)庫(kù)中的記錄。

MyBatis攔截器介紹

MyBatis提供了一種插件(plugin)的功能,雖然叫做插件,但其實(shí)這是攔截器功能。MyBatis 允許你在已映射語(yǔ)句執(zhí)行過(guò)程中的某一點(diǎn)進(jìn)行攔截調(diào)用。對(duì)于攔截器Mybatis為我們提供了一個(gè)Interceptor接口,通過(guò)實(shí)現(xiàn)該接口就可以定義我們自己的攔截器。

MyBatis默認(rèn)調(diào)用四種類(lèi)型的方法:

1.Executor (update, query, flushStatements, commit, rollback, getTransaction, close, isClosed)

2.ParameterHandler (getParameterObject, setParameters)

3.ResultSetHandler (handleResultSets, handleOutputParameters)

4.StatementHandler (prepare, parameterize, batch, update, query)

以上4個(gè)都是Configuration的方法,這些方法在MyBatis的一個(gè)操作(新增,刪除,修改,查詢(xún))中都會(huì)被執(zhí)行到,執(zhí)行的先后順序是Executor,ParameterHandler,ResultSetHandler,StatementHandler。

接口的定義是:

Mybatis攔截器的實(shí)現(xiàn)介紹

這三個(gè)方法中,plugin用于處理器的構(gòu)建,intercept用于處理代理類(lèi),setProperties用語(yǔ)攔截器屬性設(shè)置。
Plugin類(lèi)實(shí)現(xiàn)了InvocationHandler的接口,返回了一個(gè)JDK自身的動(dòng)態(tài)動(dòng)態(tài)代理類(lèi),對(duì)于plugin的wrap方法:

Mybatis攔截器的實(shí)現(xiàn)介紹

判斷當(dāng)前目標(biāo)對(duì)象是否有實(shí)現(xiàn)對(duì)應(yīng)需要攔截的接口,如果沒(méi)有則返回目標(biāo)對(duì)象本身,如果有則返回一個(gè)代理對(duì)象。

代理對(duì)象的InvocationHandler正是一個(gè)Plugin,當(dāng)目標(biāo)對(duì)象執(zhí)行接口方法時(shí),如果是通過(guò)代理對(duì)象執(zhí)行的,會(huì)調(diào)用invocationHandler的invoke方法,就是Plugin的invoke方法:

Mybatis攔截器的實(shí)現(xiàn)介紹

如果當(dāng)前執(zhí)行的方法是定義好的需要攔截的方法,則把目標(biāo)對(duì)象、要執(zhí)行的方法以及方法參數(shù)封裝成一個(gè)Invocation對(duì)象,再把封裝好的Invocation作為參數(shù)傳遞給當(dāng)前攔截器的intercept方法。如果不需要攔截,則直接調(diào)用當(dāng)前的方法。

對(duì)于getSignatureMap方法

Mybatis攔截器的實(shí)現(xiàn)介紹

getSignatureMap是首先會(huì)拿到攔截器這個(gè)Intercept注解,遍歷拿到type屬性,然后根據(jù)這個(gè)type得到帶有method屬性和args屬性的method,最終返回一個(gè)type為key,value為Set<Method>的Map。例對(duì)Executor.class的update方法進(jìn)行過(guò)濾,會(huì)產(chǎn)生key為Executro,value為Method實(shí)例,里面帶有MappedStatement和method方法對(duì)應(yīng)的參數(shù)。

Mybatis攔截器的實(shí)現(xiàn)介紹

攔截器的可配置性:

Mybatis攔截器的實(shí)現(xiàn)介紹

原文鏈接:http://blog.csdn.net/czengze/article/details/52976457

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚洲视频在线免费观看 | 国产视频久久 | 日韩一区二区三区电影在线观看 | 一级黄色大片 | 国产精品久久久久久久久免费桃花 | 精品国产乱码久久久久久88av | 激情综合色综合久久综合 | 热久久影院 | 久久机热 | 欧美一级片aaa | japan23xxxxhd乱| 色678黄网站全部免费 | 久久精品视频一区 | 日韩小视频在线观看 | 成人午夜精品久久久久久久蜜臀 | 欧美激情一区二区三级高清视频 | 国产精品久久久久久久久久三级 | 天天操网 | 爱干视频 | 欧美在线观看一区 | 午夜视频一区 | 有码在线| 在线日韩欧美 | a资源在线观看 | 国产精品1区2区 | 精品视频在线观看 | 在线观看亚洲一区二区三区 | 日韩在线 | 欧美黄色免费网址 | 999精品一区 | 91精品国产综合久久久久久 | 在线看国产 | 色成人免费网站 | 成人一级片 | 亚洲三区在线观看 | 久久精品国产亚洲一区二区三区 | 欧洲一区| 亚洲午夜av | 亚洲欧美国产精品专区久久 | 可以在线观看的黄色 | 亚洲网站在线 |