PageInfo 分页优化

PageInfo 分页优化

mybatis PageInfo分页插件在当前项目开发中被广泛使用,但是随着数据量的增多以及业务的复杂性,PageInfo分页的效率会大大降低.其中原因是因为每次请求分页的数据都会先请求count.这样的话我们就会花费2T+的时间,上述的情况下对于用户体验是极差的.

优化方向

1.只做一次count查询

startPage(int pageNum, int pageSize, boolean count)
其中count 设置为false将不会进行count的查询,实施的过程为:
第一次请求:
pages=0;
if pages == 0 => boolean count = true;//进行数量查询
...查询过程...
pageInfo的pages为总页数.前端做保存或者传递给后台作为返回结果也可以.
第二次请求:
请求参数pages = 第一次请求返回结果中的pages;
if pages > 0 => boolean count = fasle;//不进行进行数量查询
...查询过程...
pageInfo.setPages(pages);
....
之后前端只需要根据pages来判断是否需要进行下一页的请求

2.不做count查询

startPage(int pageNum, int pageSize, boolean count)
其中count 设置为false将不会进行count的查询,实施的过程为:
将参数设置为false后,每次查询结果中:
如果 pageInfo.getSize == pageSize 那么我们默认存在下一页,将pageInfo.setHasNextPage(true)
否则pageInfo.setHasNextPage(false)

总结

上述两种方法都有缺点以及优点. 第一种第一次请求的时候会很慢. 第二种无法获得详细的分页信息.而且可能会造成最后一次请求多余.

你可能感兴趣的:(学习笔记)