1、Interviewceptor插件开发的demo先记录下,mybatis的加载过程和执行过程下次再补上
package com.syygl.test.study.mybatis;
import org.apache.ibatis.executor.Executor;
import org.apache.ibatis.plugin.*;
import org.mybatis.spring.boot.autoconfigure.ConfigurationCustomizer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.util.Properties;
/**
*type=
* Executor 拦截执行器的方法
* ParameterHandler 拦截参数的处理
* ResultSetHandler 拦截结果集的处理
* StatementHandler 拦截Sql语法构建的处理
*
* method的值是以上四个接口中的method
*
* args的值是method的参数
*
*/
@Intercepts(
{
@Signature(type = Executor.class, method = "query", args = {})
}
)
public class InterceptorTest implements Interceptor {
@Override
public Object intercept(Invocation invocation) throws Throwable {
//Invocation是type中指定要拦截的对象 ---调用
//proceed ---继续
return invocation.proceed();
}
@Override
public Object plugin(Object target) {
//是要拦截的对象才会进入处理方案
return Plugin.wrap(target, this);
}
@Override
public void setProperties(Properties properties) {
}
}
/**
* MybatisConfig用来将自定义的Interceptor添加进去
*/
@Configuration
class MybatisConfig {
@Bean
ConfigurationCustomizer mybatisConfigurationCustomizer() {
return new ConfigurationCustomizer() {
@Override
public void customize(org.apache.ibatis.session.Configuration configuration) {
configuration.addInterceptor(new InterceptorTest());
}
};
}
}