一 pagehelper和自定义mybatis拦截器冲突bug
1.1 问题描述
当在springboot工程,持久层使用mybatis,且使用pagehelper实现分页功能,当随着业务发展,需要自定义一个mybatis的拦截器实现sql的打印,但是出现拦截器失效,无法进入interceptor方法里面。
1.自定义的拦截器
2.使用pagehelper
1.2 问题原因
发现自定义拦截器与pagehelper定义分页拦截器有冲突,pagehelper分页拦截器先调用,他在调用完成后没有往下调。由于mybatis的拦截器为责任链模式调用,有一个传递机制。
1.3 解决办法
1.在pom文件中,将pagehelper和spring集成版本改成pagehelper的原生态版本,如下:
<!-- 分页插件 -->
<!-- <dependency>-->
<!-- <groupId>com.github.pagehelper</groupId>-->
<!-- <artifactId>pagehelper-spring-boot-starter</artifactId>-->
<!-- <version>1.2.13</version>-->
<!-- </dependency>-->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.3.0</version>
</dependency>
2.执行结果: 可以看到进入interceptor方法中,sql语句进行了输出。