今天前端反馈有个问题,分页返回的数据永远是一样的,经过排查,是使用PageHelper造成的问题先上问题代码
PageHelper.startPage(orderListQueryBO.getPageNum(), orderListQueryBO.getPageSize());
PageInfo<OrderListDTO> resultPageInfo = new PageInfo<>(orderExtentMapper.getNewOrderList(orderListQueryBO));
上面代码就是平时大家经常使用的代码,再看修复过的正确代码
PageHelper.startPage(orderListQueryBO.getPageNum(), orderListQueryBO.getPageSize(),true,false,false);
PageInfo<OrderListDTO> resultPageInfo = new PageInfo<>(orderExtentMapper.getNewOrderList(orderListQueryBO));
区别就是是否指明了分页合理化
下面是本次异常分析
PageHelper.startPage 传页码和数量的构造函数,默认情况下会取做分页合理化
如果你的页码出现异常,则会默认返回第一页的数据
我们前端的判定是,如果当前页不满足10条,则不会往后继续翻页如果是10条,则会往后再加载一页,恰巧,第二页没有任何数据,分页组件判定页码不合法,又给返回了第一页的数据,就导致前端的瀑布下拉一直都是第一页的数据。
总结:后端应当判定好分页合理化的使用场景,比如瀑布下拉,就不适合该场景,前端也应当同步做好判定,后端每次都会返回总页码,超出总页码,不应该再往后加载。
版权声明:本文为qq_27628011原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。