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

java实现分页

    博客分类:
  • java
阅读更多

平时我们用到的分页程序主要有两种分页方式:

1:用数据库进行分页方式,也就是说,每次从数据库中取得要展示的数据的记录。

2:一次从数据库中抓取到所有需要的数据记录放到缓存中,页面展示的时候根据需要从缓存中取得所需要的数据信息,然后展现给用户。

这里介绍的是第二种分页方式:

 

 

/**
 * 
 */
package com.gd.page;

/**
 * @author lgd
 *
 */
public interface PageInfo
{
	/**
	 * 不能确定总纪录数
	 */
    public static final int NO_SURE_ALL_COUNT_NUMBER = Integer.MIN_VALUE ; 

	/**
	 * 不能确定页数
	 */
	public static final int NO_SURE_PAGE_NUMBER = Integer.MIN_VALUE + 1 ;  

    /**
     * @return 总页数
     */
    public int getPageCount();
	
    /**
     * @return 当前页号
     */
    public int getPageNumber();

    /**
     * @return 每页行数
     */
    public int getPageSize();

    /**
     * @return 总计纪录数
     */
    public int getRecordCount();

    /**
     * @return 当前页纪录数
     */
    public int getRecordCountInPage();
    
}

 

/**
 * 
 */
package com.gd.page;
/**
 * @author lgd
 *
 */
public class RecordPageInfo implements PageInfo
{
    private int pageCount = 0;
    private int pageSize = 0;
    private int recordCount = 0;
    private int pageNumber = 0;
    private int recordCountInPage=0;
    /**
     * @param recordCnt 总纪录数
     * @param pageSize  分页尺寸
     */
    public RecordPageInfo(int recordCnt, int pageSize)
    {
        this.pageSize=pageSize ;
        this.recordCount =recordCnt ;
        if (recordCnt==0)
        { 
            pageCount =0 ; 
        }
        else if (pageSize<=0) 
        { 
            pageCount = 1 ; 
            pageNumber =1 ;
            recordCountInPage = recordCnt;
            this.pageSize = 0;
        } 
        else 
        {
             pageCount = (recordCnt + pageSize - 1) / pageSize ;
             pageNumber =1 ;
             makeRecordCountInpage();
        } 
    }
    /**
     * 
     * @param pageNo 
     * @return 该页应该定位到的起始行号 ,行号的起始数是 1 
     */
    public int gotoPage(int pageNo)
    {
        if (pageCount==0) 
        {
            pageNumber = 0;
            recordCountInPage = 0 ;  
            return 0 ;      
        }
        else if (pageSize <= 0)
        {
            return 1 ;
        }
        else if (pageCount < pageNo)
        {
            this.pageNumber = pageCount ;
        }
        else if (pageNo <= 0 )
        {
            this.pageNumber = 1 ;
        }
        else 
        {
            this.pageNumber = pageNo ;
        }
        makeRecordCountInpage ();
        return (pageNumber-1)*pageSize + 1;
    }
	/**
	 * 构建每页显示的数量
	 */
    private void makeRecordCountInpage()
    {
         if (pageNumber== pageCount ) //最后一页
         {
             recordCountInPage = recordCount - (pageNumber-1)*this.pageSize;  
         }
         else 
         {
             recordCountInPage = this.pageSize;
         }
    }

    /**
     * @return 页数量
     */
    public int getPageCount()
    {
        return pageCount;
    }

    /**
     * @return 当前页号
     */
    public int getPageNumber()
    {
        return pageNumber;
    }

    /**
     * @return 页大小
     */
    public int getPageSize()
    {
        return pageSize;
    }

    /**
     * @return 记录总数
     */
    public int getRecordCount()
    {
        return recordCount;
    }

    /**
     * @return 当页记录数
     */
    public int getRecordCountInPage()
    {
        return recordCountInPage;
    }
	public String toString()
	{
 		StringBuffer buffer = new StringBuffer();
		buffer.append("pageCount = " + pageCount );
		buffer.append("\npageSize = " + pageSize );
		buffer.append("\nrecordCount = " + recordCount );
		buffer.append("\npageNumber = " + pageNumber );
		buffer.append("\nrecordCountInPage = " + recordCountInPage );
		return buffer.toString();
	}
}

 

/**
 * 
 */
package com.gd.page;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;

/**
 * @author lgd
 * 分页的页内容信息,每页显示多少条信息
 */
public class PagedList implements List,PageInfo
{
    
    private final PageInfo info;

	private final List list ; 
	/**
	 * 
	 * @param pageSize 
	 * @param pageNo
	 * @param list
	 * @return PagedList
	 */
	public static final PagedList getInstance(int pageSize, int pageNo, List list)
	{
		RecordPageInfo pageInfo = new RecordPageInfo(list.size() ,pageSize);
		int fromIndex =pageInfo.gotoPage(pageNo) - 1;
		if (fromIndex<0)
		{
			return new PagedList(pageInfo, Collections.EMPTY_LIST);
		}
		int toIndex  = fromIndex + pageSize  ;
		if (toIndex > list.size()) toIndex = list.size()  ; 
		return new PagedList(pageInfo, list.subList(fromIndex, toIndex));
	}

	public static final PagedList EMPTY_PAGEDLIST = new PagedList(new  RecordPageInfo(0,0),new ArrayList(0));

	/**
     * @param info
     * @param list
     * 
     */
	public PagedList(PageInfo info, List list) 
    {
        super();
        this.info = info ;
        this.list = list; 
    }
    public int getPageCount()
    {
        
        return info.getPageCount();
    }
    public int getPageNumber()
    {
        return info.getPageNumber();
    }
    public int getPageSize()
    {
        return info.getPageSize() ;
    }
    public int getRecordCount()
    {
        return info.getRecordCount();
    }
    public int getRecordCountInPage()
    {
        return size();
    }
	public void add(int index, Object element)
	{
		list.add(index, element);
	}
	public boolean add(Object o)
	{
		return list.add(o);
	}
	public boolean addAll(int index, Collection c)
	{
		return list.addAll(index, c);
	}
	public boolean addAll(Collection c)
	{
		return list.addAll(c);
	}
	public void clear()
	{
		list.clear();
	}
	public boolean contains(Object o)
	{
		return list.contains(o);
	}
	public boolean containsAll(Collection c)
	{
		return list.containsAll(c);
	}
	public boolean equals(Object obj)
	{
		return list.equals(obj);
	}
	public Object get(int index)
	{
		return list.get(index);
	}
	public int hashCode()
	{
		return list.hashCode();
	}

	public int indexOf(Object o)
	{
		return list.indexOf(o);
	}

	public boolean isEmpty()
	{
		return list.isEmpty();
	}

	public Iterator iterator()
	{
		return list.iterator();
	}

	public int lastIndexOf(Object o)
	{
		return list.lastIndexOf(o);
	}

	public ListIterator listIterator()
	{
		return list.listIterator();
	}
	public ListIterator listIterator(int index)
	{
		return list.listIterator(index);
	}

	public Object remove(int index)
	{
		return list.remove(index);
	}
	public boolean remove(Object o)
	{
		return list.remove(o);
	}

	public boolean removeAll(Collection c)
	{
		return list.removeAll(c);
	}
	public boolean retainAll(Collection c)
	{
		return list.retainAll(c);
	}
	public Object set(int index, Object element)
	{
		return list.set(index, element);
	}
	public int size()
	{
		return list.size();
	}
	public List subList(int fromIndex, int toIndex)
	{
		return list.subList(fromIndex, toIndex);
	}
	public Object[] toArray()
	{
		return list.toArray();
	}
	public Object[] toArray(Object[] a)
	{
		return list.toArray(a);
	}
	public String toString()
	{
		StringBuffer buffer = new StringBuffer();
		buffer.append("PageInfo :\n" + info.toString());
		buffer.append("ListSize() : " + list.size());
		if (list.size() > 0)
		{
			buffer.append("ListElementType : " + list.get(0).getClass().getName());
		}
		return  buffer.toString();
	}
}

 

/**
 * 
 */
package com.gd.page;

import java.util.ArrayList;
import java.util.List;

/**
 * @author lgd
 *
 */
public class Client {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		    List<Integer> list = init();
		    int pageNo=1;
		    //10表示每页10条记录,pageNo表示页号,list记录集合
		    PagedList pagelist=PagedList.getInstance(10,pageNo,list);
		    for(Object p:pagelist){
		    	System.out.println(p);
		    }
	}
	private static List<Integer> init() {
		List<Integer>  list=new ArrayList<Integer>();
		list.add(0);
		list.add(1);
		list.add(2);
		list.add(3);
		list.add(4);
		list.add(5);
		list.add(6);
		list.add(7);
		list.add(8);
		list.add(9);
		list.add(10);
		list.add(11);
		return list;
	}
}

 

0
0
分享到:
评论

相关推荐

    java实现分页 jsp分页 分页

    java实现分页 jsp分页 分页java实现分页 jsp分页 分页java实现分页 jsp分页 分页java实现分页 jsp分页 分页java实现分页 jsp分页 分页java实现分页 jsp分页 分页

    用java 实现分页

    本教程将深入讲解如何使用Java实现分页功能,并结合SQL2000数据库和MyEclipse开发环境进行实战操作。 首先,我们需要了解分页的基本参数:当前页(currentPage)和每页记录数(pageSize)。基于这些参数,我们可以...

    java实现分页······

    2. Java实现分页的关键点: - 数据库查询:首先,我们需要根据用户的当前页和每页显示的数量,编写SQL语句来获取相应的数据。例如,使用`LIMIT`和`OFFSET`(MySQL)或`FETCH NEXT`和`WITH OFFSET`(SQL Server)来...

    java实现分页示例代码共6页.pdf.zip

    这个"java实现分页示例代码共6页.pdf.zip"文件很可能包含了一个详细的教程或者示例代码,用于指导开发者如何在Java环境中实现分页功能。 首先,让我们了解分页的基本概念。分页通常涉及两个主要部分:前端展示和...

    java实现分页的工具类

    java实现分页的工具类!对首页、上一页、下一页、尾页包括选择某一页可以轻松实现!

    java实现分页技术

    本篇将详细阐述如何使用Java实现分页技术,以及涉及到的关键接口和实现策略。 首先,我们定义一个`Pageable`接口,它扩展了`java.sql.ResultSet`接口,目的是为了在不破坏原有JDBC接口的基础上添加分页功能。`...

    java 实现分页功能

    在这个名为"PageDemo"的示例中,我们将深入探讨如何使用Java实现分页功能,以及其中涉及到的关键知识点。 首先,我们需要理解分页的基本概念。分页是将一个大的数据集分割成多个小的部分,每个部分称为一页。用户...

    分页缓存

    本篇文章将深入探讨如何使用Java来实现分页缓存,并介绍在读取过程中如何优先从缓存获取数据。 首先,理解分页的基本概念是必要的。在Web应用中,当用户浏览大量数据时,通常会采用分页的方式来显示,而不是一次性...

    Java实现分页功能

    为了实现分页,我们首先需要在MyBatis的Mapper接口中定义一个带有分页参数的方法。例如: ```java public interface UserMapper { List&lt;User&gt; selectUsersByPage(int currentPage, int pageSize); } ``` 接着,在...

    java实现分页显示效果

    Java 实现分页显示效果 标题解释 本文的标题是 "Java 实现分页显示效果",这意味着我们将要讨论如何使用 Java 语言来实现分页显示效果。分页显示效果是指在一个页面中显示一部分数据,而不是显示所有数据,这样...

    Java实现分页查询

    以下是一段使用JDBC实现分页查询的基本步骤: 1. **建立数据库连接**:使用`DriverManager.getConnection()`方法,传入数据库URL、用户名和密码,建立与Oracle数据库的连接。 2. **设置SQL查询语句**:在分页查询...

    java 实现分页目录查询.zip

    为了实现分页查询,`FileUtil`可能会包含一个递归函数,用于深度遍历目录,收集所有文件信息,并将这些信息传递给`FileMap`进行处理。递归是关键,因为它能确保无论目录结构多么复杂,都能正确地获取所有子目录和...

    Java实现真分页.自己领悟.

    "Java实现真分页.自己领悟."这个主题主要关注如何在Java Web应用中实现高效的分页机制。这里我们通过分析标题、描述以及提供的文件名,可以推测出一个基于自定义标签库(Tag Library)的分页解决方案。 首先,`...

    MySQL_数据库实现的JAVA_分页实例

    2. **JAVA实现分页** 在Java中,我们通常通过JDBC来执行SQL查询。首先,建立数据库连接,然后创建Statement或PreparedStatement对象,设置SQL语句(包含分页参数),执行查询,并使用ResultSet处理结果。例如: ``...

    java实现的一个分页程序

    在这个"java实现的一个分页程序"中,我们可以探讨几个关键知识点: 1. **JDBC分页**:Java中的分页通常通过Java Database Connectivity (JDBC) API来实现。使用PreparedStatement和Statement对象,我们可以在SQL...

    基本分页存储管理全.java

    基本分页存储管理全.java

    分页功能实现java

    在Java Web开发中,实现分页功能通常涉及前端页面(JSP)和后端代码(Java)的协同工作。而这里提到的Eclipse、Struts、Hibernate则是Java开发中常用的工具和框架,分别用于集成开发环境、MVC模式的Web层框架和对象...

Global site tag (gtag.js) - Google Analytics