抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

  Github地址
  pagehelper是github上开源的分页插件,可以做到无侵入,不用修改select语句的分页插件,它应该是通过调用mybatis钩子,在查询时自动修改查询语句,自动加上limit语句做到分页的。

导入依赖

1
2
3
4
5
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.5</version>
</dependency>

使用介绍

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
======
@Override
public PageResult search(LetterSign letterSign, PageIndex pageIndex) {
if (pageIndex.getPageSize() == null) {
pageIndex.setPageSize(20);
}
if (pageIndex.getPageNo() == null) {
pageIndex.setPageNo(1);
}
PageHelper.startPage(pageIndex.getPageNo(), pageIndex.getPageSize());
List<LetterSign> list = letterSignMapper.searchSelective(letterSign);
if (list.size() == 0) {
return PageResult.success("数据为空");
}
PageInfo pageInfo = new PageInfo<LetterSign>(list);
return PageUtils.getPageResult(pageInfo);
}

PageHelper.startPage 这个api我看过,底层用的是LocalThread类,将数据暂存在线程上,然后在mybatis的钩子中,从线程里把pageNo、pageSize取出来,设计的还是很巧妙的。

PageInfo 就是对Page结果进行包装

github上的使用文档

2). PageHelper.startPage 静态方法调用
除了 PageHelper.startPage 方法外,还提供了类似用法的 PageHelper.offsetPage 方法。

在你需要进行分页的 MyBatis 查询方法前调用 PageHelper.startPage 静态方法即可,紧跟在这个方法后的第一个MyBatis 查询方法会被进行分页。

评论