项目场景:
使用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
}
}
在使用PageHelper进行分页查询时,发现返回的总数据量total始终等于每页显示的数量,而非实际数据库中的总数。问题出在类型转换后赋值给PageInfo的操作。解决方法是先创建PageInfo对象并赋值原始数据,再进行类型转换,最后将转换后的集合放入PageInfo的list属性中,确保总数正确。
9354

被折叠的 条评论
为什么被折叠?



