`

一个分页算法

阅读更多

/**
* 分页算法
*/
package cn.eshore.user.util;

public class PageBean {

private int currentPage = 1;// 当前页数

public int totalPages = 0;// 总页数

private int pageSize = 0;// 每页显示数

private int totalRows = 0;// 总数据数

private int startNum = 0;// 开始记录

private int nextPage = 0;// 下一页

private int previousPage = 0;// 上一页

private boolean hasNextPage = false;// 是否有下一页

private boolean hasPreviousPage = false;// 是否有前一页

public PageBean(int pageSize, int currentPage, int totalRows) {

this.pageSize = pageSize;
this.currentPage = currentPage;
this.totalRows = totalRows;

if ((totalRows % pageSize) == 0) {
totalPages = totalRows / pageSize;
} else {
totalPages = totalRows / pageSize + 1;
}

if (currentPage >= totalPages) {
hasNextPage = false;
currentPage = totalPages;
} else {
hasNextPage = true;
}

if (currentPage <= 1) {
hasPreviousPage = false;
currentPage = 1;
} else {
hasPreviousPage = true;
}

startNum = (currentPage - 1) * pageSize;

nextPage = currentPage + 1;

if (nextPage >= totalPages) {
nextPage = totalPages;
}

previousPage = currentPage - 1;

if (previousPage <= 1) {
previousPage = 1;
}

}

public boolean isHasNextPage() {

return hasNextPage;

}

public boolean isHasPreviousPage() {

return hasPreviousPage;

}

/**
* @return the nextPage
*/
public int getNextPage() {
return nextPage;
}

/**
* @param nextPage
*            the nextPage to set
*/
public void setNextPage(int nextPage) {
this.nextPage = nextPage;
}

/**
* @return the previousPage
*/
public int getPreviousPage() {
return previousPage;
}

/**
* @param previousPage
*            the previousPage to set
*/
public void setPreviousPage(int previousPage) {
this.previousPage = previousPage;
}

/**
* @return the currentPage
*/
public int getCurrentPage() {
return currentPage;
}

/**
* @param currentPage
*            the currentPage to set
*/
public void setCurrentPage(int currentPage) {
this.currentPage = currentPage;
}

/**
* @return the pageSize
*/
public int getPageSize() {
return pageSize;
}

/**
* @param pageSize
*            the pageSize to set
*/
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}

/**
* @return the totalPages
*/
public int getTotalPages() {
return totalPages;
}

/**
* @param totalPages
*            the totalPages to set
*/
public void setTotalPages(int totalPages) {
this.totalPages = totalPages;
}

/**
* @return the totalRows
*/
public int getTotalRows() {
return totalRows;
}

/**
* @param totalRows
*            the totalRows to set
*/
public void setTotalRows(int totalRows) {
this.totalRows = totalRows;
}

/**
* @param hasNextPage
*            the hasNextPage to set
*/
public void setHasNextPage(boolean hasNextPage) {
this.hasNextPage = hasNextPage;
}

/**
* @param hasPreviousPage
*            the hasPreviousPage to set
*/
public void setHasPreviousPage(boolean hasPreviousPage) {
this.hasPreviousPage = hasPreviousPage;
}

/**
* @return the startNum
*/
public int getStartNum() {
return startNum;
}

/**
* @param startNum
*            the startNum to set
*/
public void setStartNum(int startNum) {
this.startNum = startNum;
}
}

     如果你使用的是struts,那么你在调用这个PageBean分页算法之前,你得先取得对你所想要进行分页的数据的总记录数,然后你就实例化这个PageBean,之后你就可以通过get方法得到任何你想要的值。

package test;

import cn.eshore.user.util.PageBean;

public class Test extends DispatchAction{
   
        ......

        public ActionForward loadPageUser(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {

.......
                  int pageSize = 5;
                 
                  String pageId = request.getParameter("pageId");
if (pageId == null || pageId.equals("")) {
pageId = "1";
}
int currentPage = Integer.parseInt(pageId);

                  //从服务层里得到用户的总记录数
int totalRows = userService.getTotalRows();

PageBean page = new PageBean(pageSize, currentPage, totalRows);

....
}
}

分享到:
评论

相关推荐

    动态分页算法java代码

    以下是一个简单的Java代码示例,基于List实现动态分页: ```java public class Pagination { private int totalRecord; // 总记录数 private int pageSize; // 每页记录数 private int currentPage; // 当前页码...

    高效struts分页算法

    在Struts框架中,我们可以创建一个名为`PageBean`的Java Bean来存储和管理分页所需的信息。以下是一些关键属性: 1. `currentPage`: 当前页码,初始化为1。 2. `totalPages`: 总页数,根据总数据量和每页记录数计算...

    海量数据库的查询优化及分页算法方案

    海量数据库的查询优化及分页算法方案 随着大规模数据库的出现,如何高效地从这些超大容量的数据库中提取数据、分析、统计以及进行数据分页已经成为一个亟待解决的难题。以下我们将探讨如何在有着1000万条数据的MS ...

    纯Java分页算法完整版本

    这个我人写的一个纯Java版的分页算法,与平台无关性,具有很好的通用性,同时附带完整的工程; 工程使用SQLServer2005,建表脚本在工程下的Setup中,根据你个人的数据库调整资源文件中的配置即可运行;同时这个算法...

    海量数据库查询优化及分页算法方案

    3. **Keyset分页**:使用特定的主键或唯一键值作为分页依据,每次请求时只返回一个范围内的数据,这样避免了计算总行数的问题,尤其适合大数据量的场景。 4. **Limit分页**:在MySQL等支持LIMIT关键字的数据库中,...

    模拟仿真请求分页调度算法

    当需要替换页面时,算法遍历页面表,选择第一个标记为未访问的页面进行替换。这种方法降低了LRU的实现复杂性,但牺牲了一定的性能。 MFC是微软提供的C++类库,用于构建Windows应用程序。利用MFC,我们可以创建用户...

    mysql_海量数据库的查询优化及分页算法方案.doc

    MySQL 海量数据库的查询优化及分页算法方案 在大规模数据库中,查询优化和分页算法是两个非常重要的方面。本文将详细介绍 MySQL 海量数据库的查询优化和分页算法方案。 一、查询优化 查询优化是指通过调整查询...

    分页算法三种页面置换算法(FIFO、LRU 和 OPTimal)的模拟

    一个分页算法的模拟,比较了三种页面置换算法(FIFO、LRU 和 OPTimal)的性能。

    分页算法 AspNetPager 分页实例 分页sql语句

    这种方式对于大数据集效率较高,但需要维护一个全局的最大或最小ID。 4. **物理分页与逻辑分页**:物理分页直接在存储层进行,如数据库索引,而逻辑分页是在应用层处理,如在查询结果上进行操作。物理分页通常更...

    网页上实现分页算法

    在网页开发中,分页算法是一项重要的技术,它使得大量数据可以被有效地组织和呈现,提高了用户体验。结合面向对象编程(OOP)思想,我们可以创建一个分页对象,以简化DAO(数据访问对象)层的代码,使得数据的分页...

    (VB.NET)WinForm自定义DataGridView分页组合控件

    2. 分页逻辑:开发者需要实现一个分页算法,确定每一页显示多少行数据,以及如何根据用户的选择(如上一页、下一页、跳转到指定页)来切换数据。这通常涉及到计算总页数、获取指定页的数据范围等操作。 3. 自定义...

    分页算法 c语言代码

    分页算法是计算机科学中的一个重要概念,在Web开发中尤其常见。它的主要目的是将大量的数据按照一定的规则分割成多个较小的数据块(通常称为“页”),以便用户可以更方便地浏览和管理这些数据。 ### 分页算法的...

    可滚动分页算法发,始终显示第一页跟最后一页

    - **更新导航**:在导航栏中,显示第一页、最后一页以及当前页码附近的页码,保持总数在一个合适的范围内,比如5个左右。 - **滚动监听**:监听滚动事件,实时调整页码范围并更新导航。 - **异步加载**:当用户...

    分页存储算法实现

    Clock算法是一种基于时间戳的优化FIFO算法,它在每个页面上设置一个引用位。当需要替换页面时,遍历页面链表,遇到引用位为0的页面立即替换;如果所有页面的引用位都为1,则重置整个链表并从头开始查找。这种方法...

    oracle分页算法

    对oracle操作报表,能够对数据进行分裂分页算法

    分页算法java实现

    分页是数据处理中的一个常见需求,尤其是在Web应用中,为了提升用户体验和减轻服务器压力,将大量数据分批展示是必要的。本文将深入分析一段Java代码,该代码实现了分页算法,通过解析其内部结构与逻辑,帮助理解...

    Java 分页算法祥解

    ----------=====Java 分页算法 =====------------ 1.Struts+JDBC分页算法 1.1 创建分页控制类(如果使用kevinb.jar可以省略本步) --创建接口Pageable.java --创建实现类PageableResultSet.java 使用以这个实现类来...

    JAVA大数据分页算法

    在大数据处理领域,分页算法是至关重要的,尤其是在Java编程环境下。当我们在处理大量数据时,一次性加载所有数据到内存可能会导致性能问题甚至内存溢出。因此,分页查询成为了一个有效的解决方案,它允许我们每次只...

    ssh框架实现的分页功能

    在服务层,我们需要实现一个分页算法,计算总页数和当前页的数据范围。基本步骤包括: 1. 计算总记录数:通过DAO查询未分页的总数据量。 2. 计算总页数:总页数等于总记录数除以每页数量,如果余数不为0,则总页数加...

Global site tag (gtag.js) - Google Analytics