/**
* @Intercepts :标识这个类是一个拦截器
*
* @Signature:
* type:就是指定拦截器的类型
* mybatis拦截器可以拦截如下4中类型:
* 1)Executor sql的内部执行器
* 2)ParameterHandler 拦截参数的处理
* 3)StatementHandler 拦截sql的构建
* 4)ResultSetHandler 拦截结果的处理
*
* method:是拦截器类型中的方法(看拦截器源码可找到),不是自己定义的方法
*
* args:是method中方法的入参(看拦截器源码可找到)
*
*
* 拦截器顺序
* 1 不同拦截器顺序:
* Executor -> ParameterHandler -> StatementHandler -> ResultSetHandler
* 2 对于同一个类型的拦截器的不同对象拦截顺序:
* 在 mybatis 核心配置文件根据配置的位置,拦截顺序是 从上往下
*/
@Intercepts(value = {
@Signature(type = StatementHandler.class, method = "prepare", args = {Connection.class , Integer.class}),
})
@Component
public class MybatisStatementHandler implements Interceptor {
@Override
public Object intercept(Invocation invocation) throws Throwable {
//对目标sql拦截后进行改造的代码写在此处
System.out.println("拦截后改造---");
Object proceed = invocation.proceed();//执行改造后的sql
return proceed;
}
}
Mybatis拦截器使用
最新推荐文章于 2024-04-19 05:34:46 发布