先来看正常的整合
1.pom.xml依赖,Springboot版本是2.7
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.3.1</version>
</dependency>
<!--Mybatis分页插件-->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.12</version>
</dependency>
2.配置
注意这我们一般都不需要什么额外的配置,因为pagehelper-spring-boot-starter的整合度很高
3.如何使用分页
// 使用的方法很多,这里给出最简单最常用的一种
@Override
public PageInfo<KeyWord> searchKeywords(KeyWord keyWord, Integer pageNum, Integer pageSize) {
PageHelper.startPage(pageNum,pageSize);
List<KeyWord> keyWords = keyWordMapper.searchKeywords(keyWord);
PageInfo<KeyWord> pageInfo = new PageInfo<>(keyWords);
return pageInfo;
}
4.问题来了
按照网上的教程到这里就应该是能够成功分页的,但是我这里项目能正常启动,分页插件确实是不生效的。而且控制台无任务错误信息。
这时候就需要排查问题出在那里了。回想一下,PageHelper的工作原理就是借助了Mybatis提供的一个Interceptor,进而对sql进行改写,最后达成分页的效果。既然我们已经知道了它需要实现Interceptor这个接口,那我们何不顺着这条路,主动为分页插件实例化对象。请看下面这个代码
@Configuration
public class PageHelperConfigure {
@Bean
public Interceptor[] plugins() {
return new Interceptor[]{new PageInterceptor()};
}
}
5.问题解决
虽然没有时间去找为什么分页插件不生效,但是我们自己可以通过步骤4直接帮它初始化对应的对象,进而也能达到分页的效果。