天天看點

MyBatis之簡單了解Plugin

MyBatis的Configuration配置中有一個Plugin配置,根據其名可以解釋為“插件”,這個插件實質可以了解為“攔截器”。“攔截器”這個名詞不陌生,在衆多架構中均有“攔截器”。這個Plugin有什麼用呢?活着說攔截器有什麼用呢?可以想想攔截器是怎麼實作的。Plugin用到了Java中很重要的一個特性——動态代理。是以這個Plugin可以了解為,在調用一個方法時,我“攔截”其方法做一些我想讓它做的事。它可以攔截以下方法:

MyBatis之簡單了解Plugin

在官方文檔中有這麼一句話:If you attempt to modify or override the behaviour of a given method, you’re likely to break the core of MyBatis. 謹慎使用自定義Plugin攔截器,因為它可能修改Mybatis核心的東西。實作自定義Plugin我們需要實作 Interceptor接口。并未這個類注解@Intercepts。

别忘了在mybatis-config.xml的配置檔案中注冊自定義Plugin。(下面的配置中有一些遺留代碼,是在上兩節中的配置,可以選擇性的忽略。)

用戶端測試代碼:

至此,我們就簡單的了解了MyBatis中的Plugin。有興趣的可以看看我們在用戶端測試代碼中的第29行所調用的plugin方法。即調用了Plugin類的靜态方法wrap(Object target, Interceptor intercpetor),追蹤該方法會發現,此方法即是Java的動态代理。

本文轉自xmgdc51CTO部落格,原文連結:http://blog.51cto.com/12953214/1942289 ,如需轉載請自行聯系原作者