优点:无需修改已有代码,如果使用AOP依然需要在每个位置添加注解,而Mybatis拦截器无需修改
- 实现Interceptor接口,重写intercept、plogin、setProperties方法
- 将Intercepts注解写在这个类上,参数会赋值上一些拦截的逻辑,参数映射器等
- 在重写的intercept方法上,通过invocation.getArgs获取mappedstatement参数,可以获取其中的sql的类型、参数
- 从打通的上下文中取出传递的用户id,给对应的字段赋值,赋值的时候是通过反射拿到所有的VO对象的所有字段,get所有的field,setAccessible(true)允许访问,然后设置值。