前端传入当前页数(page)、每页条数(size);查询数据库获取总条数(countRows)
逻辑分析
逻辑挺简单的,但是自个想还是比较麻烦。
为什么要设置代码所示的这些变量?
咱们先来看一般的分页长什么样子:
1)直观的可以看到分页有:每一页显示条数、上一页、当前页、下一页、总的页数 这5个元素。那么这五个元素的变量应当创建出来。
2)其次总的页数应该怎么获取呢?
不难想到总条数除以每页显示条数,有余数就进一。
3)又如何获取总的条数?
当然是查询数据库了,不可能是前端给你吧!!!所以又需要再创建一个变量countRows(总条数)
4)最后,分页查询是如何实现的?
写一个简单的分页查询:select * from Today_He where userName like "%何%" limit 0,10
。其他都不难理解,后面的limit关键字是何意义:限制查询,从第一条开始(下标为0),查询10条数据。那么同理,要查询第二页的数据:limit 10,10;第三页 limit 20,10……
如图——
limit关键字跟的数据:后面的10就是每页显示条数size;前面的数据0,10,20,30…如何设置呢?观察规律不难发现:(page-1) * size
总结
需要7个变量——[ ]:表示可能
变量 | 用途 |
---|---|
size | 每页显示条数:前端给 |
prevPage | 上一页:page-1;1 |
page | 当前页数:前端给 |
nextPage | 下一页:page+1;countPage |
countRows | 总条数:查询数据库 |
countPge | 总页数 :countRows / size [+1] |
index | 偏移量(limit的第一个参数):(page-1) * size |
代码
package com.hbw.util;
public class pageUtil {
//每页条数
private int size;
//当前页数
private int page;
//偏移量(移动多少)
private int index;
//总条数
private int countRows;
//总页数
private int countPge;
//上一页
private int prevPage;
//下一页
private int nextPage;
//构造初始化:将前端传来的size、page,后端查询的countRows传入构造方法完成初始化
private pageUtil(int size,String page,int countRows) {
this.size = size;
this.countRows = countRows;
//初始化当前页数
initPage(page);
//初始化偏移量
initIndex();
//初始化总页数
initCountPage();
//初始化上一页
inintPrevPage();
//初始化下一页
inintNextPage();
}
//初始化当前页数page:如果前端没有传入page,默认是第一页
private void initPage(String page) {
if(page==null || "".equals(page)) {
this.page = 1;
}else {
this.page = Integer.parseInt(page);
}
}
//初始化偏移量index:限制查询的参数,limit index,size
private void initIndex() {
index = (page - 1)*size;
}
//初始化总页数countPage:总条数除以每页显示条数,有余数加一页
private void initCountPage() {
countPge =countRows/size + countRows % size ==0 ? 0 : 1 ;
}
//初始化上一页prevPage:如果已经是首页(第一页),那么不能在上一页;否则,当前页数减一即可
private void inintPrevPage() {
//如果page=1,就不能继续上一页
if(page == 1) {
prevPage = 1;
}else {
prevPage = page -1;
}
}
//初始化下一页nextPage:如果已经是最后一页(当前页等于总页数),那么不能在下一页;否则,当前页数加一即可
private void inintNextPage() {
//如果已经是最后一页
if(page == countPge) {
nextPage = countPge;
}else {
nextPage = page +1;
}
}
public int getSize() {
return size;
}
public int getPage() {
return page;
}
public int getIndex() {
return index;
}
public int getCountRows() {
return countRows;
}
public int getCountPge() {
return countPge;
}
public int getPrevPage() {
return prevPage;
}
public int getNextPage() {
return nextPage;
}
}