一:概述
mybatis插件可以帮我们对mybatis的四大对象进行拦截处理,要使用好插件,我们需要先了解四大对象的作用,这样才能根据需求定义插件。
二:mybatis的四大对象
1.Executor:
负责调用StatementHandler操作数据库,以及二级缓存的处理(使用CachingExecutor进行包装)定义插件可以修改原生sql
2.StatementHandler:
负责sql脚本的执行以及mybatis一级缓存的处理,定义插件可以修改原生的sql,例如分页插件,数据权限等
3.ParameterHandler:
负责对参数的处理,定义插件可以修改对参数的处理
4.ResultSetHandler:
负责对结果集的处理,定义插件拦截可以修改对结果集处理的逻辑
三:自定义插件
1. 实现Interceptor接口
2.利用@Intercepts注解和@Signature注解定义需要拦截的方法
3.intercept方法中编写需要拦截后需要的代码逻辑
@Intercepts(value = {@Signature(type = Executor.class,
method = "query",
args = {MappedStatement.class,Object.class,