首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

分页查询兑现

2012-11-05 
分页查询实现在查询列表时我们常常会用到分页,分页的好处就是减少数据交换,每次查询一定数量减少数据库压

分页查询实现

在查询列表时我们常常会用到分页,分页的好处就是减少数据交换,每次查询一定数量减少数据库压力等等。

按实现形式分前台分页和服务器分页:

前台分页就是一次查询出所有记录,在页面中用js进行虚拟分页,这种形式在数据量较小时优势比较明显,一次加载就不必再访问服务器了,但当数据量较大时会对页面造成压力,传输速度也会大幅下降。

服务器分页就是每次请求相同数量记录,按一定规则排序,每次取一定序号直接的数据。例如,我想查询班级学生列表,这个列表按学号排序,当查看第一页时查询1-10号学生,第二页时11-21号学生以此类推。这样分页的好处就是每次查询的返回时间是固定的,但每次都需要访问服务器与数据库,这种分页常用于大数据量查询。

下面我们主要说说服务器分页。

?jsp分页代码:

public static int DEFAULT_PAGE_SIZE = 10;// 默认每页显示数public static int MAX_PAGE_SIZE=Integer.MAX_VALUE;//最大记录数private int pageSize = DEFAULT_PAGE_SIZE; // 每页的记录数private int start; // 起始记录private int totalCount; // 总记录数private int currentPage; // 当前页/** * 取总记录数. */public int getTotalCount() {return this.totalCount;}/** * 取总页数. */public int getTotalPageCount() {if (totalCount % pageSize == 0) {if (totalCount == 0)return 1;elsereturn totalCount / pageSize;} elsereturn totalCount / pageSize + 1;}/** * 取每页数据容量. */public int getPageSize() {return pageSize;}/** * 取该页当前页码,页码从1开始. */public int getCurrentPageNo() {return start / pageSize + 1;}/** * 该页是否有下一页. */public boolean hasNextPage() {return this.getCurrentPageNo() < this.getTotalPageCount() - 1;}/** * 该页是否有上一页. */public boolean hasPreviousPage() {return this.getCurrentPageNo() > 1;}/** * 获取任一页第一条数据在数据集的位置,每页条数使用默认值. *  * @see #getStartOfPage(int,int) */public static int getStartOfPage(int pageNo) {return getStartOfPage(pageNo, DEFAULT_PAGE_SIZE);}/** * 获取任一页第一条数据在数据集的位置. *  * @param pageNo *            从1开始的页号 * @param pageSize *            每页记录条数 * @return 该页第一条数据 */public static int getStartOfPage(int pageNo, int pageSize) {return (pageNo - 1) * pageSize;}public int getNextPageNo() {return getCurrentPageNo() + 1;}public int getPreviousPageNo() {return getCurrentPageNo() - 1;}public boolean getHasNextPage() {return this.getCurrentPageNo() < this.getTotalPageCount();}public boolean getHasPreviousPage() {return this.getCurrentPageNo() > 1;}/** * @return the start */public int getStart() {return start;}/** * @param start *            the start to set */public void setStart(int start) {this.start = start;}/** * @return the currentPage */public int getCurrentPage() {return currentPage;}/** * @param currentPage *            the currentPage to set */public void setCurrentPage(int currentPage) {this.currentPage = currentPage;}/** * @param pageSize *            the pageSize to set */public void setPageSize(int pageSize) {this.pageSize = pageSize;}/** * @param totalCount *            the totalCount to set */public void setTotalCount(int totalCount) {this.totalCount = totalCount;}

?里面含有计算总数和当前页码等。

热点排行