学习过Struts之类MVC模式的WEB框架,对拦截器都不会很陌生。拦截器的主要作用就是拦截某些方法的调用,可以在被拦截的方法执行前,或者执行后后加上自定义的逻辑。也可以用自定义的逻辑替换被拦截方法的原有逻辑。Mybatis也提供了拦截器的功能。Mybatis拦截器设计的初衷就是为了在需要的时候可以方便的添加自定义逻辑,而不是去修改Mybatis的源代码。
Mybatis提供了一个Interceptor接口,通过实现该接口就可以定义拦截器。接口的定义如下图所示:
接口中共有三个方法:intercept、plugin和setProperties。Plugin用于封装目标对象。通过该方法可以返回目标对象,也可以返回它的代理对象。当返回代理对象时,可对其中的方法进行拦截,调用intercept方法。setProperties方法是可用于在Mybatis配置文件中设定属性。