工具类——自定义分页工具类:page、size、countRows

自定义分类工具类


前端传入当前页数(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;
	}
	
}

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陈年_H

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值