项目场景:
使用PageHelper分页查询,返回数据错误
问题描述
查出来的总数total,总是等于每页显示个数,不是真实数据数量
参数:pageNumber=1 pageSize=2,数据库实际数量20
{
"page": {
"total": 2,
"list": ["1","2"],
"pageNum": 1,
"pageSize": 2,
"size": 7,
"startRow": 1,
"endRow": 7,
"pages": 1,
"prePage": 0,
"nextPage": 0,
"isFirstPage": true,
"isLastPage": true,
"hasPreviousPage": false,
"hasNextPage": false,
"navigatePages": 8,
"navigatepageNums": [
1
],
"navigateFirstPage": 1,
"navigateLastPage": 1
}
}
原因分析:
List<XxxxVO> xxxxVOS = BeanHelper.copyCollection(list, XxxxVO .class); new PageInfo<>(xxxxVOS);//问题出在此处 //注意:此处的BeanHelper是自定义的类型转换类
使用分页后,对查询到的数据进行类型转换后,再赋值到PageInfo后,数据总数total就会发生改变,变为当前集合的值,而不再是数据库总数的值。
解决方案:
List<XxxxEntity> list = queryList(dto); PageInfo pageInfo = new PageInfo<>(list);//先赋值,注意不要写具体泛型 List<XxxxVO> xxxxVOS = BeanHelper.copyCollection(list, XxxxVO .class); pageInfo.setList(xxxxVOS);//再将转型后的集合放进去
先将查询到的list集合放入PageInfo中,此处注意不要指定数据泛型,然后再类型转换后,将转换后的集合放进去
{
"page": {
"total": 20,
"list": ["1","2"],
"pageNum": 1,
"pageSize": 2,
"size": 7,
"startRow": 1,
"endRow": 7,
"pages": 1,
"prePage": 0,
"nextPage": 0,
"isFirstPage": true,
"isLastPage": true,
"hasPreviousPage": false,
"hasNextPage": false,
"navigatePages": 8,
"navigatepageNums": [
1
],
"navigateFirstPage": 1,
"navigateLastPage": 1
}
}