`
jef
  • 浏览: 118579 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

一个分页支持类

 
阅读更多
参考了http://www.iteye.com/article/14657?page=3#comments文章中的PaginationSupport类实现,略微扩展了一下。

import java.util.List;

/**
 * 	ps.getItems()得到已分页好的结果集 
 *		ps.getIndexes()得到分页索引的数组 
 *		ps.getTotalCount()得到总结果数 
 *		ps.getStartIndex()当前分页索引 
 *		ps.getNextIndex()下一页索引 
 *		ps.getPreviousIndex()上一页索引
 *     @see http://www.iteye.com/article/14657?page=3#comments
 */
public class PageSupport {
  
    public final static int PAGESIZE = 30;   
  
    private int pageSize = PAGESIZE;
  
    private List items;
  
    private int totalCount;   
  
    private int[] indexes = new int[0];   
  
    private int startIndex = 0;
  
    public PageSupport(List items, int totalCount) {
        setPageSize(PAGESIZE);
        setTotalCount(totalCount);   
        setItems(items);
        setStartIndex(0);   
    }
  
    public PageSupport(List items, int totalCount, int startIndex) { 
        setPageSize(PAGESIZE);   
        setTotalCount(totalCount);   
        setItems(items);           
        setStartIndex(startIndex);   
    }
  
    public PageSupport(List items, int totalCount, int pageSize, int startIndex) {
        setPageSize(pageSize);   
        setTotalCount(totalCount);   
        setItems(items);   
        setStartIndex(startIndex);   
    } 
      
    public List getItems() {
        return items;   
    }
  
    public void setItems(List items) {   
        this.items = items;   
    }
  
    public int getPageSize() {
        return pageSize;   
    }   
  
    public void setPageSize(int pageSize) {   
        this.pageSize = pageSize;   
    }   
  
    public int getTotalCount() {   
        return totalCount;   
    }   
  
    public void setTotalCount(int totalCount) {   
        if (totalCount > 0) {   
            this.totalCount = totalCount;   
            // 81/10 = 8 
            int count = totalCount / pageSize;   
            if (totalCount % pageSize > 0)   
                count++;   
            indexes = new int[count];   
            for (int i = 0; i < count; i++) {   
                indexes[i] = pageSize * i;   
            }   
        } else {   
            this.totalCount = 0;   
        }   
    }   
  
    public int[] getIndexes() {   
        return indexes;   
    }   
  
    public void setIndexes(int[] indexes) {   
        this.indexes = indexes;   
    }   
  
    public int getStartIndex() {   
        return startIndex;   
    }   
  
    public void setStartIndex(int startIndex) {   
        if (totalCount <= 0)   
            this.startIndex = 0;   
        else if (startIndex >= totalCount)   
            this.startIndex = indexes[indexes.length - 1];   
        else if (startIndex < 0)   
            this.startIndex = 0;   
        else {   
            this.startIndex = indexes[startIndex / pageSize];   
        }   
    }   
  
    public int getNextIndex() {
        int nextIndex = getStartIndex() + pageSize;   
        if (nextIndex >= totalCount)   
            return getStartIndex();   
        else  
            return nextIndex;
    }
  
    public int getPreviousIndex() {   
        int previousIndex = getStartIndex() - pageSize;   
        if (previousIndex < 0)   
            return 0;   
        else  
            return previousIndex;   
    }
    
    
    //--------------------------------------------------------------
    
    /**
     * 末页索引
     */
    public int getLastIndex(){
    	return getIndexes()[getIndexes().length-1];
    }
    
    /**
     * 分页总数
     */
    public int getTotalPageNum(){
    	return getIndexes().length;
    }
    
    /**
     * 获得当前页码
     */
    public int getCurrentPageNum(){
    	int[] indexs = getIndexes();
    	int startIndex = getStartIndex();
    	int i=0;
    	for(i=0;i<indexs.length;i++){
    		if(startIndex == indexs[i])
    			break;
    	}
    	return (i+1);
    }
    
    /**
     * 根据页码获得分页索引值 pagenum>=1
     */
    public int getIndexByPageNum(int pagenum){
    	if(pagenum<=1)
    		return 0;
    	if(pagenum>getTotalPageNum())
    		return getLastIndex();
    	return getIndexes()[pagenum-1];
    }
    
    public boolean hasPreviousPage(){
    	return getStartIndex()==0?false:true;
    }
    
    public boolean hasNextPage(){
    	return (getCurrentPageNum() == getTotalPageNum())?false:true;
    }
    
    private String queryString = null;

	public String getQueryString() {
		return queryString;
	}

	public void setQueryString(String queryString) {
		this.queryString = queryString;
	}
  
}  
分享到:
评论

相关推荐

    一个对html表格分页的类

    `HuidaGrid.js` 文件很可能是这个分页类的核心代码,它可能包含了一个或多个用于处理表格、分页和查询的函数。这些函数可能包括初始化表格、计算每一页显示的数据量、根据用户选择的页码切换显示的数据、以及处理...

    java分页大全 包括最强大的java分页类

    "javaPageSupport.rar"可能是另一个分页库,可能提供了更强大的功能,如动态SQL支持、缓存优化、与多种数据库兼容等。强大的分页类通常会考虑更多的实际需求,比如排序、过滤条件、统计信息等,并且可能具有高度可...

    PHP的一个超强分页类

    本篇文章将深入探讨一个名为"page.class.php"的PHP分页类,以及如何使用它来实现高效的分页功能。 首先,我们要理解分页的基本原理。在网页上,如果一次性加载所有数据,不仅会消耗大量服务器资源,而且可能导致...

    分页工具类分页工具类

    2. 应用程序层面:在Java中,可以自定义一个分页工具类,包含如分页参数(当前页码、每页大小)、数据获取方法(根据页码和每页大小从数据库获取数据)以及分页导航信息(如上一页、下一页、总页数等)。 3. 设计...

    asp.net 分页类

    这时,创建一个自定义的分页类就显得尤为必要。 一个自定义的ASP.NET分页类通常包括以下核心组件和功能: 1. **数据获取**:分页类首先需要能从数据源(如SQL Server数据库、XML文件、Web服务等)中获取数据。这...

    ssh 分页代码(延迟加载)

    这里`PageSupport`是自定义的一个分页支持类,用于封装分页参数,如当前页数、每页记录数等。`findByPage`方法接收一个`PageSupport`对象,返回当前页的数据列表。 接着,我们关注`PageSupport.java`。这个类通常...

    oracle 分页类文件

    再者,`ShowSQL.java`可能是一个辅助类,用于生成分页SQL。在Oracle数据库中,由于不支持直接的`LIMIT`子句,通常会通过`ROWNUM`和子查询来实现分页。`ShowSQL.java`可能会包含生成这类复杂SQL的静态方法,接收页码...

    php封装的page分页类.zip

    "php封装的page分页类" 是一个专门用于处理这种需求的类库,它简化了PHP分页的实现过程,通过封装核心逻辑,使开发者能够快速、高效地实现分页功能。 首先,我们要理解分页的基本原理。在数据库查询中,如果一次性...

    PHP超强分页类

    “PHP超强分页类”是一款专为PHP开发人员设计的强大工具,旨在简化分页逻辑,提高网页应用的用户体验。该类支持多种显示模式,能够适应不同的场景需求,并且兼容PHP4和PHP5版本。 #### 二、特点与功能 1. **支持...

    php的一个分页类.zip

    这个"php的一个分页类.zip"文件提供了一个预封装的分页类,可以帮助开发者快速实现分页功能,无需从零开始编写代码。下面将详细介绍PHP分页类的核心概念、工作原理以及如何使用。 一、分页类核心概念 1. 总记录数...

    SSH集成+分页抽象类+自定义标签 == 分页数据效果

    在IT行业中,SSH(Struts2 + Spring + Hibernate)是一个非常经典的Java Web开发框架组合,它为开发者提供了高效、灵活的MVC(Model-View-Controller)架构支持。本项目中,我们将深入探讨如何利用SSH集成实现一个...

    常用类 数据库连接类 分页类

    一个分页类通常包含获取总记录数、设置每页显示条数、计算总页数、生成分页链接等功能。例如,可以设计一个简单的分页类: ```php class Pagination { private $total_rows; private $per_page; private $...

    e路JS分页样式类,e路JS分页样式类

    "e路JS分页样式类"是一个专门针对JavaScript实现的分页样式库,它提供了美观的界面和友好的用户体验。在这个主题中,我们将深入探讨JavaScript分页的实现原理、设计模式以及如何利用CSS来定制样式。 首先,...

    asp.net 通用分页类

    `asp.net 通用分页类`就是为了解决这个问题而设计的,它允许开发者创建一个可复用的组件,以便在不同的数据展示页面上实现高效且灵活的分页功能。 首先,我们来看`C#`语言是如何实现分页逻辑的。在C#中,可以创建一...

    一个PHP分页类的代码

    本篇文章将深入解析一个PHP分页类的代码,并讲解其核心概念和用法。 1. **类定义与属性** 分页类(`page`)定义了一些公共属性,如`page_name`(页面标识),`next_page`和`pre_page`(下一页和上一页的表示),...

    一个ajax分页的公共类

    这个“一个ajax分页的公共类”提供了一个通用的解决方案,可以被多个页面或项目复用,减少了重复代码,提高了开发效率。 1. **Ajax基础** Ajax的核心是通过JavaScript创建XMLHttpRequest对象,向服务器发送异步...

    php完美分页类支持ajax等多种分页模式

    该分页系他人书写,本人修改! 附带详细使用方法 以及函数说明!可直接用于php项目 !支持多种分页方式!

    java分页工具类

    6. **可扩展性**:好的分页工具类应具备良好的扩展性,支持不同数据库的分页方式,并可以通过配置进行调整。 7. **缓存优化**:在高并发场景下,可以考虑引入缓存机制,如Redis,存储部分热门页的数据,减少数据库...

    php完美分页类,支持无限分页,简洁大气样式,包你好用

    php完美分页类,支持无限分页,简洁大气样式,包你好用

    公共的Pager分页实体类

    "公共的Pager分页实体类"是一个设计用于简化分页操作的Java类,它封装了处理分页逻辑所需的一些基本功能,使得开发者能够快速集成到自己的项目中,而无需从头编写这些基础代码。 Pager类通常包含以下关键组成部分:...

Global site tag (gtag.js) - Google Analytics