java后台处理数据分页问题

本文介绍了一种基于MySQL的分页查询方法,通过自定义分页辅助类实现数据的有效管理和展示,减轻服务器压力并提高用户体验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

分页功能在项目中是非常重要的,使用分页功能能够极大的减轻服务器的压力,不用一次全部加载出所有数据,只需要加载出客户需要的数据信息

使用分页辅助类来完成分页功能
一是因为分页辅助类来的开发可以适用于不同数据信息的分页,具有扩展性
二是因为有的时候前端页面展示信息的需求决定的,把页面上要展示的信息到包含在这个分业辅助类对象中,然后再jsp页面就可以全部获取

步骤:

基于mysql的分页查询
关键字----limit m,n m起始位置(从0开始) n条数
m=(currentPage-1)*pageSize
n=pageSize

步骤一:建立分页辅助类
package com.zy.utils;

import java.util.List;

public class LimitUtil {//分页辅助类
	//属性
	//页面尺寸----->自己规定的
	private Integer pageSize=3;
    //总条数------->从数据库查询的(SELECT COUNT(*) from t_customer)
	private Integer totalCount;
	//总页数------->总页数int c=(a%b==0?(a/b):(a/b)+1);
	private Integer pageCount;
	//当前页 ------->页面传入的参数
	private Integer currentPage;
	//查询出来的数据集合 ?不确定:增强扩展性
	private List<?> data;
	public LimitUtil() {
		super();
	}
	public LimitUtil(Integer pageSize, Integer totalCount, Integer pageCount, Integer currentPage, List<?> data) {
		super();
		this.pageSize = pageSize;
		this.totalCount = totalCount;
		this.pageCount = pageCount;
		this.currentPage = currentPage;
		this.data = data;
	}
	public Integer getPageSize() {
		return pageSize;
	}
	public void setPageSize(Integer pageSize) {
		this.pageSize = pageSize;
	}
	public Integer getTotalCount() {
		return totalCount;
	}
	public void setTotalCount(Integer totalCount) {
		this.totalCount = totalCount;
	}
	//-------------------------------------
	//修改该get方法
	public Integer getPageCount() {
		//总页数int c=(a%b==0?(a/b):(a/b)+1);	
		pageCount=(totalCount%pageSize==0?(totalCount/pageSize):(totalCount/pageSize)+1);
		return pageCount;
	}
	//-----------------------------------------
	public void setPageCount(Integer pageCount) {
		this.pageCount = pageCount;
	}
	public Integer getCurrentPage() {
		return currentPage;
	}
	public void setCurrentPage(Integer currentPage) {
		this.currentPage = currentPage;
	}
	public List<?> getData() {
		return data;
	}
	public void setData(List<?> data) {
		this.data = data;
	}
}
步骤二:完成接口层
	public List<Customer> getCustomers(int m,int n);
	接口层参数有两个,是为了sql查询语句传参数服务的
步骤三:完成服务层
   public LimitUtil getCustomerInfo(int currentPage) {
	//得到 m,n
	LimitUtil limitUtil = new LimitUtil();//不饱满,未把属性填充完整
	limitUtil.setCurrentPage(currentPage);
	int m=(currentPage-1)*limitUtil.getPageSize();
	int n=limitUtil.getPageSize();		
	List<Customer> customers = cd.getCustomers(m, n);
	//把limitUtil中未赋值的属性赋值
	limitUtil.setTotalCount(cd.getTotalCount());
	limitUtil.setData(customers);
	return limitUtil;//经过以上赋值,limitUtil拥有页面所需要的一些信息,把它返回出去
	}

服务层的参数是由前端页面获得值确定的,这里只有一个参数是当前页面,通过这个参数我们要获得接口层参数m和n的值,并且将分页辅助类的内容填充好,之后返回该分页辅助类对象。

步骤四:前端页面获取需要的数据
<c:forEach items="${pageBean.data}" var="customer">	
								<tr>
									<td>${customer.custName}</td>
									<td>${customer.dict.dname}</td>
									<td>${customer.custSource}</td>
									<td>${customer.custPhone}</td>
									<td>${customer.custMobile}</td>
									<td><a href="${pageContext.request.contextPath}/ToUpdateServlet?id=${customer.cid}&currentPage=${pageBean.currentPage-1}">修改</a>&nbsp;&nbsp;&nbsp;&nbsp;<a href="DeleteCustServlet?id=${customer.cid}&control=deleteCust&currentPage=${pageBean.currentPage-1}" onclick="javascript:return confirm('请慎重考虑是否要删除该数据!!!!')">删除</a></td>
								</tr>
</c:forEach>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值