分页功能在项目中是非常重要的,使用分页功能能够极大的减轻服务器的压力,不用一次全部加载出所有数据,只需要加载出客户需要的数据信息
使用分页辅助类来完成分页功能
一是因为分页辅助类来的开发可以适用于不同数据信息的分页,具有扩展性
二是因为有的时候前端页面展示信息的需求决定的,把页面上要展示的信息到包含在这个分业辅助类对象中,然后再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}¤tPage=${pageBean.currentPage-1}">修改</a> <a href="DeleteCustServlet?id=${customer.cid}&control=deleteCust¤tPage=${pageBean.currentPage-1}" onclick="javascript:return confirm('请慎重考虑是否要删除该数据!!!!')">删除</a></td>
</tr>
</c:forEach>