本文关键详细介绍了简易掌握mybatis拦截器完成基本原理及案例,原文中根据实例编码详细介绍的十分详尽,对大伙儿的学习培训或是工作中具备一定的参照学习培训使用价值,必须的盆友能够参照下
常规国际惯例,首先看些基本要素:
1 拦截器的功效便是我们可以阻拦一些方式的启用,在总体目标方式前后左右再加上我们自己逻辑性
2 Mybatis拦截器设计方案的一个初心是为了更好地供客户在一些情况下能够完成自身的逻辑性而无须去动Mybatis原有的逻辑性。
自定拦截器
* mybatis 自定拦截器
* 三流程:
* 1 完成 {@link Interceptor} 插口
* 2 加上阻拦注释 {@link Intercepts}
* 3 环境变量中加上拦截器
* 1 完成 {@link Interceptor} 插口
* 实际功效能够看下面编码每一个方式的注解
* 2 加上阻拦注释 {@link Intercepts}
* mybatis 拦截器默认设置可阻拦的种类仅有四种,即四种接口方式 Executor、StatementHandler、ParameterHandler 和 ResultSetHandler
* 针对大家的自定拦截器务必应用 mybatis 出示的注释来指出我们要阻拦的是四类中的哪一个类插口
* 实际标准以下:
* a:Intercepts 拦截器: 标志我的类是一个拦截器
* b:Signature 落款: 则是指出大家的拦截器必须阻拦哪一个插口的哪一个方式
* type 相匹配四类插口中的某一个,例如是 Executor
* method 相匹配插口中的哪类方法,例如 Executor 的 update 方式
* args 相匹配插口中的哪一个方式,例如 Executor 中 query 由于轻载缘故,方式有好几个,args 便是指出主要参数种类,进而明确是哪一个方式
* 3 环境变量中加上拦截器
* 拦截器实际上便是一个 plugin,在 mybatis 关键环境变量中大家必须配备大家的 plugin :
* plugin interceptor="liu.york.mybatis.study.plugin.MyInterceptor"
* property name="username" value="LiuYork"/
* property name="password" value="123456"/
* /plugin
* 拦截器次序
* 1 不一样拦截器次序:
* Executor - ParameterHandler - StatementHandler - ResultSetHandler
* 2 针对同一个种类的拦截器的不一样目标阻拦次序:
* 在 mybatis 关键环境变量依据配备的部位,阻拦次序是 从上向下
@Intercepts({
@Signature(method = "update", type = Executor.class, args = {MappedStatement.class, Object.class}),
@Signature(method = "query", type = StatementHandler.class, args = {Statement.class, ResultHandler.class})
public class MyInterceptor implements Interceptor {
* 这一方式非常好了解
* 功效只有一个:大家并不是阻拦方式吗,阻拦以后我们要做什么事情呢?
* 这一方式里边便是我们要做的事儿
* 表述这一方式前,大家一定要了解方式主要参数 {@link Invocation} 是个什么玩意?