分页实现方法

文章目录
  1. 1. limit offset,count的方式实现分页
  2. 2. preCursor nextCursor方式分页

limit offset,count的方式实现分页

这种分页方式可以提供完整的分页信息,比如页码,总页数(需要计算),总记录数等。

前端需要传给后台两个参数:当前页,每页显示记录数(currentPage,pageSize)或者一个参数:当前页(currentPage),每页显示记录数(pageSize)由后台自己提供。

offest和count计算方式如下:

1
2
int offset = (currentPage-1)*pageSize;
int count = pageSize;

MySql分页查询语句如下

1
SELECT * FROM table LIMIT offset,count; -- offset 和 count替换成上面计算得结果。

查询总记录数(totalCount)Sql语句如下

1
SELECT count(*) FROM table

计算总页数

1
int totalCount = Math.ceil(totalCount/pageSize);//向上取整

preCursor nextCursor方式分页

这种方式分页不显示页码级总页数,总记录数等分页信息,适用于只有两个分页按钮(上一页,下一页),无限加载情况。

前端需要给后台传两个参数nextCursor(或者preCursor) 和 pageSize(pageSize也可以后台自己提供)

下一页(无限加载)对应的sql语句

1
SELECT * FROM table WHERE created_at>nextCursor ORDER BY created_at DESC LIMIT pageSize; -- nextCursor 和 pageSize 替换成对应的值

上一页对应的sql语句

1
SELECT * FROM table WHERE created_at<preCursor ORDER BY created_at DESC LIMIT pageSize; -- preCursor 和 pageSize 替换成对应的值

其中nextCursor和preCursor存的是created_at的一个值,比如一次行查出10条数据,那么nextCursor存的就是第十条数据的created_at值,preCursor存的就是第一条数据created_at值。preCursor 和 nextCursor 需要传给前端,便于下次翻页的时候前端再传给后端。