一、实现:
1、实现Interceptor接口:
2、配置签名注解:
案例:
@Intercepts({@Signature( type = Executor.class, method = "query", args = {MappedStatement.class, Object.class, RowBounds.class, ResultHandler.class} )}) public class PageHelper implements Interceptor{}
二、原理:
插件通过动态代理机制,可以介入四大对象的任何一个方法的执行;
•Executor(update, query, flushStatements, commit, rollback, getTransaction, close, isClosed)
•ParameterHandler(getParameterObject, setParameters)
•ResultSetHandler(handleResultSets, handleOutputParameters)
•StatementHandler(prepare, parameterize, batch, update, query)
三、详解;
1、拦截器介绍:
public interface Interceptor { Object intercept(Invocation var1) throws Throwable; Object plugin(Object var1); //传递插件参数 void setProperties(Properties var1); }
(1)void setProperties(Properties v