如何分页

如何分页


分页的主要的两个底层算法,以及分页查询的底层思路如下所示,
了解了底层原理,封装不是难事,关键在原理不在代码!
公式拿走,自己即可封装工具类,轻松完成分页.
话不多说,开始

Start!

关键数据:
请求的当前页 pageNum
请求的显示条数 pageSize
返回的总页数 totalPage
返回的总条数 totalCount
返回的list数据 data
查询data的开始索引 startIndex

已知关键数据:
pageNum
pageSize

需要从数据库中查的有:
totalCount 可以直接查出
data 需要开始索引关键数据startIndex

需要计算出来的关键数据的有:
totalPage
startIndex

计算公式:

总页数计算公式:
int totalPage= (totalCount+pageSize-1)/pageSize;//备注: java int 会取整;
测试:
总条数   每页显示条数   总页数     验证
27        10             3         (27+10-1)/10=3 
28        10             3         (28+10-1)/10=3
29        10             3         (29+10-1)/10=3
30        10             3         (30+10-1)/10=3
31        10             4         (31+10-1)/10=4

开始索引startIndex:
int startIndex=(pageNum-1)*totalPage;
测试: 
设: 数据量为100条,根据总条数totalCount与每页显示条数pageSize可以由上公式算出totalPage一共10页;
请求页码  显示条数   开始索引      LIMIT   DATA                             验证                     
1         10         0         0,10    (0,1,2,3,4,5,6,7,8,9)            (1-1)*10=0
2         10         10        10,10   (10,11,12,13,14,15,16,17,18,19)  (2-1)*10=10
3         10         20        20,10   (20,21,22,23,24,25,26,27,28,29)  (3-1)*10=20
4         10         30        30,10   (30,31,32,33,34,35,36,37,38,39)  (4-1)*10=30
5         10         40        40,10   (40,41,42,43,44,45,46,47,48,49)  (5-1)*10=40

代码中应用:
1 已知 请求参数 pageNum pageSize
int pageNum;
int pageSize;
2 查询总条数(这里忽略查询条件)
int totalCount = select count(*) from XXX;
3 计算总页数
int totalPage= (totalCount+pageSize-1)/pageSize;
4 计算开始索引
int startIndex=(pageNum-1)*totalPage;
5 查询data数据集
List data=select * from XXX LIMIT startIndex,pageSize;

以上关键数据均已得出!
一般情况下,把关键数据封装成json或bean进行返回:
	{
		"pageNum":pageNum,
		"pageSize":pageSize,
		"totalCount":totalCount,
		"totalPage":totalPage,
		"startIndex":startIndex,
		"data":data
	}

End!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值