`

Java中List分页(不和数据库交互)

阅读更多
如果你的数据量非常大的话 建议你还是不要用这种方式 除非你每次分页取数据时用到了缓存机制,这样效率会好些 。
但是如果数据量不大可以用下面的方法,一下把数据都取出来存在List中,然后进行分页处理。

package com.brit.os.util;

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

/**
 * 通用分页工具类,该工具类分页指定泛型的List对集合
 * 
 * @author evan
 * @time 2010-01-12
 * @param <E>
 *            指定的泛型
 */
public class Page<E>
{
	/**
	 * 每页显示的记录数
	 */
	private int pageRecords = 20;

	/**
	 * 总记录数
	 */
	private int totalRecord;

	/**
	 * 分页切割的启始点
	 */
	private int startIndex;

	/**
	 * 分页切割的结束点
	 */
	private int endIndex;

	/**
	 * 总页数
	 */
	private int totalPage;

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

	/**
	 * 总记录集合
	 */
	private List<E> totalList;

	public Page(List<E> totalList)
	{
		super();

		this.totalList = totalList;

		innit();
	}

	/**
	 * 初始化该分页对象
	 */
	private void innit()
	{
		if (null != totalList)
		{
			totalRecord = totalList.size();

			if (totalRecord % this.pageRecords == 0)
			{
				this.totalPage = totalRecord / this.pageRecords;
			}
			else
			{
				this.totalPage = totalRecord / this.pageRecords + 1;
			}
		}
	}

	/**
	 * 得到分页后的数据
	 * 
	 * @return 分页数据
	 */
	public List<E> getPage(int currentPage)
	{
		this.currentPage = currentPage;

		if (currentPage <= 0)
		{
			this.currentPage = 1;
		}
		if (currentPage >= this.totalPage)
		{
			this.currentPage = this.totalPage;
		}

		List<E> subList = new ArrayList<E>();

		if (null != this.totalList)
		{
			subList.addAll(this.totalList.subList(getStartIndex(), getEndIndex()));
		}

		return subList;
	}

	/**
	 * 设置每页显示的记录条数,如果不设置则默认为每页显示30条记录
	 * 
	 * @param pageRecords
	 *            每页显示的记录条数(值必需介于10~100之间)
	 */
	public void setPageRecords(int pageRecords)
	{
		if (pageRecords >= 10 && pageRecords <= 100)
		{
			this.pageRecords = pageRecords;

			innit();
		}
	}

	public int getStartIndex()
	{
		if (null == this.totalList)
		{
			return 0;
		}

		this.startIndex = (getCurrentPage() - 1) * this.pageRecords;

		if (startIndex > totalRecord)
		{
			startIndex = totalRecord;
		}

		if (startIndex < 0)
		{
			startIndex = 0;
		}

		return startIndex;
	}

	public int getEndIndex()
	{
		if (null == this.totalList)
		{
			return 0;
		}

		endIndex = getStartIndex() + this.pageRecords;

		if (endIndex < 0)
		{
			endIndex = 0;
		}

		if (endIndex < getStartIndex())
		{
			endIndex = getStartIndex();
		}

		if (endIndex > this.totalRecord)
		{
			endIndex = this.totalRecord;
		}

		return endIndex;
	}
	
	/***
	 * 获取总页数
	 * @return
	 */
	public int getTotalPage()
	{
		return totalPage;
	}
	
	/**
	 * 获取List集合中的总条数
	 * @return
	 */
	public int getTotalRecord()
	{
		return totalRecord;
	}

	public boolean isEndPage()
	{
		return this.currentPage == this.totalPage;
	}

	/**
	 * 获取下一页的页数
	 * 
	 * @return 下一页的页数
	 */
	public int getNextPage()
	{
		int nextPage = this.currentPage + 1;

		if (nextPage > this.totalPage)
		{
			nextPage = this.totalPage;
		}
		if (nextPage <= 0)
		{
			nextPage = 1;
		}

		return nextPage;
	}

	/**
	 * 获取上一页的页数
	 * 
	 * @return 上一页的页数
	 */
	public int getPrivyPage()
	{
		int privyPage = this.currentPage - 1;

		if (privyPage > this.totalPage)
		{
			privyPage = this.totalPage;
		}

		if (privyPage <= 0)
		{
			privyPage = 1;
		}

		return privyPage;
	}
	
	/**
	 * 获取当前页页数
	 * @return
	 */
	public int getCurrentPage()
	{
		return currentPage;
	}
}
分享到:
评论

相关推荐

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

    在这个"MySQL_数据库实现的JAVA_分页实例"中,我们将探讨如何在Java后端实现对MySQL数据库的分页查询,这对于大数据量的展示和优化用户体验至关重要。 首先,理解分页的基本概念:分页是将大量数据分为多个小部分,...

    java语言的分页查询功能(mysql和sql server)

    1. JDBC基础:Java标准API中的JDBC(Java Database Connectivity)提供了与数据库交互的接口和类。通过`Statement`或`PreparedStatement`对象执行SQL语句,并使用`ResultSet`对象获取结果。 2. 分页查询SQL构造:...

    Java分页技术+数据库

    Java分页技术是Java开发中常见...合理地利用各种框架和数据库特性,结合前端交互,可以实现高效且用户体验良好的分页功能。在实际开发中,需要根据项目需求选择合适的分页策略,并注意性能优化,以保证系统的稳定运行。

    java 数据分页显示

    1. **查询策略**:在数据库层面,我们可以使用SQL语句配合`LIMIT`和`OFFSET`(在MySQL中)或`FETCH NEXT`和`OFFSET`(在SQL Server中)来实现分页查询。例如,PageSQL.java可能包含以下代码: ```java public List...

    java分页组件(直接复用,简单方便)

    2. **数据查询**:根据设定的分页参数,组件需要能与数据库进行交互,执行相应的SQL语句(如LIMIT或OFFSET在MySQL中,或者ROW_NUMBER()在SQL Server中)来获取指定范围的数据。 3. **链接生成**:生成用于导航的...

    JAVA_JDBC面向对象分页(初步设计二之oracle)

    在Java编程中,JDBC(Java Database Connectivity)是用于与数据库交互的标准API,它使得Java开发者能够连接到各种类型的数据库并执行SQL语句。在处理大量数据时,分页查询是一种有效的策略,可以提高应用程序的性能...

    java中的分页

    Java中的分页技术是Web开发中处理大数据量的...总的来说,Java中的分页技术是Web开发中的重要一环,它涉及到数据库操作、服务器端处理和客户端交互等多个方面,合理地运用分页技术能显著提升用户体验并优化系统性能。

    java自定义分页标签实现带条件的分页查询

    在Java开发中,分页查询是一项常见的需求,尤其是在构建大型Web应用时,为了提高用户体验,通常需要对大量的数据进行分页展示。本话题主要探讨如何使用自定义的Java分页标签来实现带条件的分页查询,这将帮助开发者...

    hibernate分页查询 数据库连接

    Hibernate作为一种流行的Java对象关系映射(ORM)框架,极大地简化了Java开发者与数据库的交互。本篇将深入探讨Hibernate中的分页查询功能以及它如何处理数据库连接,帮助你更有效地管理大数据量的查询操作。 首先...

    java中的分页技术

    在Java开发中,分页技术是一项至关重要的技能,特别是在处理大量数据时,为了提高用户体验和系统性能,我们通常不会一次性加载所有数据,而是采用分页的方式分批次展示数据。本篇将详细介绍Java中的分页技术及其相关...

    JAVA数字分页案例

    在Java开发中,分页是Web应用程序中非常常见的一种功能,它主要用于处理大量数据时,提高用户体验,避免一次性加载所有数据导致页面响应慢或者内存压力过大。本案例以"JAVA数字分页案例"为主题,结合SpringMVC和...

    java后台分页.docx

    这个类通常会与DAO层交互,获取数据库的总记录数和根据分页参数进行查询。 ```java public class DoPage { // ... 属性定义 public DoPage(int perPageRecordAoument, String tablename) { this....

    java servlet实现分页功能

    - 不忘关闭数据库连接和结果集,以释放资源。 5. **前端页面渲染**: - 在HTML或JSP页面上,根据接收到的JSON数据动态渲染表格,展示分页数据。 - 生成分页链接,每个链接携带当前页码和每页数量,便于用户点击...

    java 分页通用代码

    在Java开发中,分页是数据检索中非常常见的一种需求,尤其在大数据量的应用场景下,为了提高用户体验和系统性能,通常需要实现分页查询功能。本通用代码着重讲解如何在Java中实现这一功能。 首先,我们需要理解分页...

    java ssh的分页详解,及详细问题解答

    Java SSH(Struts2、Spring、...以上就是关于Java SSH框架中的分页详解及问题解答,通过合理的分页策略,可以有效地管理和展示大量数据,提高系统性能。在实际开发中,应根据项目需求选择最适合的分页实现方式。

    java js 分页控件

    Java 和 JavaScript 分页控件是Web开发中常用的技术,用于在大量数据中实现高效的数据浏览。在网页应用中,分页通常用于展示数据库查询结果,避免一次性加载所有数据导致页面响应速度变慢或消耗过多资源。本文将深入...

    数据库分页代码

    2. **Java与数据库交互** 在Java中,我们常用JDBC(Java Database Connectivity)来与数据库进行交互。通过Statement或PreparedStatement对象执行SQL查询,可以配合LIMIT和OFFSET实现分页。例如: ```java String...

    java page实现分页技术

    1、每回点击下页时,才会和数据库交互,把那页的内容 从数据库中取出来,显示在页面上。 2、第一次查询的时候,就会从数据库中把所有相关的 内容全部取出来,放入内存中(list集合),每点击下一页 的时候,从内存中把...

    Java实现分页功能

    在Java EE应用开发中,分页功能是必不可少的,它能有效地提高用户体验,尤其是在处理大量数据时。本教程将引导你了解如何使用Spring MVC和MyBatis框架来实现这一功能。Spring MVC作为控制层,负责处理请求和响应,而...

    java 分页源码

    Java 分页源码是Java开发中非常常见的一种技术,用于在大数据量的场景下,将数据分批展示,提高用户体验并...在“pagebean”这个具体实例中,学习和研究PageBean类的实现,将有助于你更好地理解和应用Java分页技术。

Global site tag (gtag.js) - Google Analytics