在做WEB开发的时候,很多时候都需要在浏览器上显示数据,而这些数据的来源大多是数据库,越庞大的系统,数据库中的记录也就越多,所以不可能一次性把这些数据显示在前端界面上,这时候就需要 分页 的功能。
分页主要有两种方式:
1、前端分页,即一次性把数据库中的数据全部取出来,在前端应用JS等技术显示一定范围内的数据。这种方法的优点是用户只需向服务器发送一次请求,缺点就是大量的数据的暂存在内存中,影响系统性能。
2、后端分页,即根据预先设置好的页大小,从数据库中取出指定数量的数据,用户每次点击“下一页”操作时,就向数据库发起一次查询请求,这种方法是比较可取的方法。
之前在做一个实验室管理系统的时候,有用到分页,总体思路利用面向对象的思想是为 分页 创建一个独立的类,同时这个把这个类指定为泛型类,因为分页的数据可以是“项目信息 ”、也可以是“用户信息”等,这样就可以重用这个分页类。
具体代码如下:
package com.zack.util;
import java.util.List;
public class PageView<T> {
private int totalRecord; //总记录数
private int totalPage; //总页数
private int currentPage; //当前页
private int pageSize; //每页记录数
private List<T> list; //要返回的某一页的记录列表
public int getTotalRecord() {
return totalRecord;
}
public void setTotalRecord(int totalRecord) {
this.totalRecord = totalRecord;
}
public int getTotalPage() {
return totalPage;
}
public void setTotalPage(int totalPage) {
this.totalPage = totalPage;
}
public int getCurrentPage() {
return currentPage;
}
public void setCurrentPage(int currentPage) {
this.currentPage = currentPage;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
public List<T> getList() {
return list;
}
public void setList(List<T> list) {
this.list = list;
}
public static int countTotalPage(final int pageSize,final int totalRecord){
int totalPage = totalRecord%pageSize==0?totalRecord/pageSize:totalRecord/pageSize+1;
return totalPage;
}
public static int countOffset(final int pageSize,final int currentPage){
final int offset = pageSize*(currentPage-1);
return offset;
}
public static int countCurrentPage(int page){
final int currentPage = (page==0?1:page);
return currentPage;
}
}