分页查询可以查询的提高反应速度,提升客户端体验。
如果不进行分页加载数据库中的内容,而是将数据库中的内容一次性的加载出来,加入数据库中的数目多达上万条,显然查询效率会变的很慢,这样对客户来说,体验感是极差的,而且给服务端造成的压力也大。
- 关键字----limit m,n m起始位置(从0开始) n条数 (例:select * from 表名 limit m,n)
- m和当前页currentPage,pageSize(条数/页)的公式
M=(currentPage-1)*pageSize
N=pageSize
分页查询开发步骤:
- 创建分页辅助类(包含页面中所需要的全部数据):
/属性
//页面尺寸----->自己规定的
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;
//-------------------------------------
//修改该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;
}
2. 接口设计:
查询总条数:
//查询总条数
public int getTotalCount();
SELECT COUNT(*) from t_customer
//分页查询客户信息
public List<Customer> getCustomers(int m,int n);
select (...) from 表名 limit m,n
3. service层:
//查询客户分页列表//LimitUtil 里面有一页面所需要的分页信息--把limitUtil填充满再返回
public LimitUtil getCustomerInfo(int currentPage);
4. servlet:
//接收参数
String parameter = request.getParameter("currentPage");
if(parameter!=null){
int currentPage=Integer.parseInt(parameter);
LimitUtil customerInfo = cs.getCustomerInfo(currentPage);
//存域
request.setAttribute("pageBean", customerInfo);
}
//跳转到分页页面
request.getRequestDispatcher("/WEB-INF/customer/limitPage.jsp").forward(request, response);