Springboot整合PageHelper

1
2
3
4
5
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.10</version>
</dependency>
1
2
3
4
5
6
7
8
pagehelper:
#标识是哪一种数据库
helper-dialect: mysql
#启用合理化,如果pageNum<1会查询第一页,如果pageNum>pages会查询最后一页
reasonable: true
#如果 pageSize=0 就会查询出全部的结果(相当于没有执行分页查询)
page-size-zero: true
support-methods-arguments: false

support-methods-arguments参数默认为false,如果开启则根据入参是否包含pageNum,pageSize两个参数(也可自己配置params参数),如果有则自动分页,此时如果又加入了PageHelper.startPage(1,10);那么所有分页的sql会出现2个limit导致sql报错,所以建议手动分页PageHelper.startPage(1,10);

1
2
3
4
5
6
7
8
9
10
@Test
void pageHelper(){
PageInfo<BasicActor> customPage = new PageInfo<>();
customPage.setPageNum(2);
customPage.setPageSize(2);
//参数一:当前页码数字,参数二:一页的总记录数,参数三:true表示自动count查询, false 表示不自动查询
PageHelper.startPage(customPage.getPageNum(), customPage.getPageSize(), true);
List<BasicActor> actor = mapper.findAllBasicActor();
System.out.println(actor);
}

不安全的分页

需要注意的是PageHelper.start(pageNum,pageSize);之后必须马上调用sql查询,如果没有及时用掉则可能会被其他不用分页的方法去消费这个分页参数

可用PageHelper.clearPage();方法手动清理 ThreadLocal 存储的分页参数

1
2
3
4
5
6
PageHelper.startPage(1, 10);
try{
list = countryMapper.selectAll();
} finally {
PageHelper.clearPage();
}

不安全分页解答

赏个🍗吧
0%