1、分页的设置写在了查询的后面
// 要设置分页的查询
List<Map<String, Object>> data = aService.listMaps();
// 设置分页
PageHelper.startPage(1, 10);
这种情况把分页的设置放查询上面就好了
2、设置分页与查询之间有其他查询语句
// 设置分页
PageHelper.startPage(1, 10);
// 其他查询
Integer id = anotherService.getById(1046).getId();
// 要设置分页的查询
List<Map<String, Object>> data = aService.listMaps();
这种情况下,分页的设置会被用到anotherService的查询上去,导致aService没有分页
解决方法:把对分页的设置紧贴着查询写
// 其他查询
Integer id = anotherService.getById(1046).getId();
// 设置分页
PageHelper.startPage(1, 10);
// 要设置分页的查询
List<Map<String, Object>> data = aService.listMaps();
3、对查询结果进行增删
// 设置分页
PageHelper.startPage(1, 10);
// 要设置分页的查询
List<Map<String, Object>> data = anotherService.listMaps();
// 对查询结果进行处理
for (int i = data.size() - 1; i >= 0; i--) {
Map<String, Object> map = data.get(i);
if (i % 2 == 0) {
data.remove(map);
}
}
这种情况会导致返回的数量和分页条件对不上,建议在有分页查询需求的情况下,把过滤条件放入sql ,而不是对查询到的结果进行过滤
4、其他情况欢迎补充
ps:以上几种情况属于使用不当,而不是PageHelper自身的bug