mybatis拦截器
@Intercepts({
@Signature(type = Executor.class, method = "query",
args = {MappedStatement.class, Object.class, RowBounds.class, ResultHandler.class})
})
public class SelectInterceptor implements Interceptor {
// 方法用来对拦截的sql进行具体的操作
@Override
public Object intercept(Invocation invocation) throws Throwable {
// Object[] args = invocation.getArgs();
// MappedStatement ms = (MappedStatement) args[0];
// Object parameterObject = args[1];
// // id为执行的mapper方法的全路径名,如com.mapper.UserMapper
// String id = ms.getId();
// // sql语句类型 select、delete、insert、update
// String sqlCommandType = ms.getSqlCommandType().toString();
// BoundSql boundSql = ms.getBoundSql(parameterObject);
// String origSql = boundSql.getSql();
// System.out.println("-----原始sql------\n"+origSql+"\n-------------");
return invocation.proceed();
}
@Override
public Object plugin(Object target) {
if (target instanceof Executor) {
return Plugin.wrap(target, this);
}
return target;
}
@Override
public void setProperties(Properties properties) {
System.out.println("-------------------");
}
}
mybatis配置文件
@Configuration
@AutoConfigureAfter(PageHelperAutoConfiguration.class)
public class MyBatisConfig {
@Autowired
private List<SqlSessionFactory> sqlSessionFactoryList;
@PostConstruct
public void addMySqlInterceptor() {
SelectInterceptor interceptor = new SelectInterceptor();
for (SqlSessionFactory sqlSessionFactory : sqlSessionFactoryList) {
sqlSessionFactory.getConfiguration().addInterceptor(interceptor);
}
}
}
添加spring.factories 文件
在resource目录下新建META-INF目录,然后添加spring.factories文件
# Auto Configure
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.github.pagehelper.autoconfigure.PageHelperAutoConfiguration,\
com.ahycg.annotation.MyBatisConfig