Pagehelper 是 Mybatis 的物理分页插件
其实现原理是实现了 Interceptor 接口,在 sql 语句执行之前将其获取到,并添加 limit 进行分页查询
查看其源码可以发现,在 Pagehelper 中使用了 ThreadLocal 保存分页信息,实现了线程隔离
具体使用
在 pom.xml 中引入对 Pagehelper 的依赖
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.1.9</version>
</dependency>
改造 Controller 方法
原来的方法
@GetMapping("/show")
public List<Book> show(){
List<Book> books = bookService.select();
return books;
}
改造后
@GetMapping("/show")
public PageInfo<Book> show(int pageNum, int pageSize){
PageHelper.startPage(pageNum, pageSize);
List<Book> books = bookService.select();
// 用于显示分页信息, 也可以直接返回 books 仅进行分页操作
PageInfo<Book> bookPageInfo = new PageInfo<>(books);
return bookPageInfo;
}
Postman 测试结果(若去掉 PageInfo, 则仅有 list 显示)