`
wdp107
  • 浏览: 144454 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Java分页实现

    博客分类:
  • java
阅读更多
public interface Paginable {

	public int getTotalCount();

	public int getPageCount();

	public int getPageSize();

	public int getCurrentPage();
	
	public int getStartIndex();

	public boolean isFirstPage();

	public boolean isLastPage();

	public int getNextPage();

	public int getPrePage();
}


public class SimplePage implements Paginable {

	public final static int PAGESIZE = 4;

	// Total count of records
	protected int totalCount;
	
	// The size of records per page
	protected int pageSize = PAGESIZE;
	
	// Current page
	protected int currentPage;
	
	// The count of pages
	private int pageCount;

	public SimplePage() {
	}
	
	public SimplePage(int totalCount) {
		setPageSize(PAGESIZE);
		setTotalCount(totalCount);
		setCurrentPage(1);
	}

	public SimplePage(int currentPage, int totalCount) {
		setPageSize(PAGESIZE);
		setTotalCount(totalCount);
		setCurrentPage(currentPage);
	}

	public SimplePage(int currentPage, int pageSize, int totalCount) {
		setPageSize(pageSize);
		setTotalCount(totalCount);
		setCurrentPage(currentPage);
	}

	public boolean isFirstPage() {
		return currentPage <= 1;
	}

	public boolean isLastPage() {
		return currentPage >= pageCount;
	}

	public int getNextPage() {
		if (isLastPage()) {
			return currentPage;
		} else {
			return currentPage + 1;
		}
	}

	public int getPrePage() {
		if (isFirstPage()) {
			return currentPage;
		} else {
			return currentPage - 1;
		}
	}

	public int getCurrentPage() {
		return currentPage;
	}
	
	public int getStartIndex() {
		return (currentPage - 1) * pageSize;
	}

	public void setCurrentPage(int currentPage) {
		if (totalCount <= 0)
			this.currentPage = 0;
		else if (currentPage >= pageCount)
			this.currentPage = pageCount;
		else if (currentPage <= 1)
			this.currentPage = 1;
		else {
			this.currentPage = currentPage;
		}
	}

	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;
			pageCount = totalCount / pageSize;
			if (totalCount % pageSize > 0)
				pageCount++;
		} else {
			this.totalCount = 0;
		}
	}

	public int getPageCount() {
		return pageCount;
	}

	public void setPageCount(int pageCount) {
		this.pageCount = pageCount;
	}
}


import java.util.List;

@SuppressWarnings("serial")
public class Pagination extends SimplePage implements java.io.Serializable,
		Paginable {

	public Pagination() {
	}

	@SuppressWarnings("unchecked")
	public Pagination(int totalCount, List list) {
		super(totalCount);
		this.list = list;
	}

	@SuppressWarnings("unchecked")
	public Pagination(int currentPage, int totalCount, List list) {
		super(currentPage, totalCount);
		this.list = list;
	}

	@SuppressWarnings("unchecked")
	public Pagination(int currentPage, int pageSize, int totalCount, List list) {
		super(currentPage, pageSize, totalCount);
		this.list = list;
	}

	public Pagination(int currentPage, int pageSize, int totalCount) {
		super(currentPage, pageSize, totalCount);
	}

	public int getFirstResult() {
		return (currentPage - 1) * pageSize;
	}

	@SuppressWarnings("unchecked")
	private List list;

	@SuppressWarnings("unchecked")
	public List getList() {
		return list;
	}

	@SuppressWarnings("unchecked")
	public void setList(List list) {
		this.list = list;
	}
}


public class PageUtil {

	public static String getPageBar1(Paginable page, String url) {
		String temp = "";
		if (url.indexOf("?") == -1) {
			temp = "?";
		} else {
			temp = "&";
		}
		StringBuffer pageBar = new StringBuffer();
		if (page.isFirstPage())
			pageBar.append("First Previous&nbsp;");
		else {
			pageBar.append("<a href='").append(url).append(temp).append(
					"currentPage=1'>First</a>&nbsp;");
			pageBar.append("<a href='").append(url).append(temp).append(
					"currentPage=").append(page.getPrePage()).append(
					"'>Previous</a>&nbsp;");
		}
		if (page.isLastPage())
			pageBar.append("Next Last&nbsp;");
		else {
			pageBar.append("<a href='").append(url).append(temp).append(
					"currentPage=").append(page.getNextPage()).append(
					"'>Next</a>&nbsp;");
			pageBar.append("<a href='").append(url).append(temp).append(
					"currentPage=").append(page.getPageCount()).append(
					"'>Last</a>&nbsp;");
		}
		pageBar.append("&nbsp;Total Page:").append(page.getPageCount()).append(
				"&nbsp;");
		pageBar.append("&nbsp;Go<select name='page' onChange=\"location='");
		pageBar.append(url).append(temp).append(
				"currentPage='+this.options[this.selectedIndex].value\">");
		int begin = (page.getCurrentPage() > 10) ? page.getCurrentPage() - 10
				: 1;
		int end = (page.getPageCount() - page.getCurrentPage() > 10) ? page
				.getCurrentPage() + 10 : page.getPageCount();
		for (int i = begin; i <= end; i++) {
			if (i == page.getCurrentPage())
				pageBar.append("<option value='").append(i).append(
						"' selected>-").append(i).append("-</option>");
			else
				pageBar.append("<option value='").append(i).append("'>-")
						.append(i).append("-</option>");
		}
		pageBar.append("</select>");
		return pageBar.toString();
	}
	
	//Implement other page bar you wanted
	public static String getPageBar2(Paginable page, String url){
		return "";
	}
}



import java.io.Serializable;
import java.util.List;
import org.hibernate.Criteria;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.criterion.DetachedCriteria;
import org.hibernate.criterion.Projections;
import org.springframework.orm.hibernate3.HibernateCallback;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import page.Pagination;

public abstract class AbstractDaoManager extends HibernateDaoSupport {

	private boolean cacheQueries = false;

	private String queryCacheRegion;

	public void setCacheQueries(boolean cacheQueries) {
		this.cacheQueries = cacheQueries;
	}

	public void setQueryCacheRegion(String queryCacheRegion) {
		this.queryCacheRegion = queryCacheRegion;
	}

	public void save(final Object entity) {
		getHibernateTemplate().save(entity);
	}

	public void persist(final Object entity) {
		getHibernateTemplate().save(entity);
	}

	public void update(final Object entity) {
		getHibernateTemplate().update(entity);
	}

	public void delete(final Object entity) {
		getHibernateTemplate().delete(entity);
	}

	public Object load(final Class entity, final Serializable id) {
		return getHibernateTemplate().load(entity, id);
	}

	public Object get(final Class entity, final Serializable id) {
		return getHibernateTemplate().get(entity, id);
	}

	public List findAll(final Class entity) {
		return getHibernateTemplate().find("from " + entity.getName());
	}

	public List findByNamedQuery(final String namedQuery) {
		return getHibernateTemplate().findByNamedQuery(namedQuery);
	}

	public List findByNamedQuery(final String query, final Object parameter) {
		return getHibernateTemplate().findByNamedQuery(query, parameter);
	}

	public List findByNamedQuery(final String query, final Object[] parameters) {
		return getHibernateTemplate().findByNamedQuery(query, parameters);
	}

	public List find(final String query) {
		return getHibernateTemplate().find(query);
	}

	public List find(final String query, final Object parameter) {
		return getHibernateTemplate().find(query, parameter);
	}

	public Pagination findPageByCriteria(
			final DetachedCriteria detachedCriteria) {
		return findPageByCriteria(detachedCriteria, Pagination.PAGESIZE,
				0);
	}

	public Pagination findPageByCriteria(
			final DetachedCriteria detachedCriteria, final int startIndex) {
		return findPageByCriteria(detachedCriteria, Pagination.PAGESIZE,
				startIndex);
	}

	public Pagination findPageByCriteria(
			final DetachedCriteria detachedCriteria, final int pageSize,
			final int currentPage) {
		return (Pagination) getHibernateTemplate().execute(
				new HibernateCallback() {
					public Object doInHibernate(Session session)
							throws HibernateException {
						Criteria criteria = detachedCriteria
								.getExecutableCriteria(session);
						int totalCount = ((Integer) criteria.setProjection(
								Projections.rowCount()).uniqueResult())
								.intValue();
						criteria.setProjection(null);
						Pagination page = new Pagination(currentPage, pageSize, totalCount);
						List items = criteria.setFirstResult(page.getStartIndex())
								.setMaxResults(pageSize).list();
						page.setItems(items);
						return page;
					}
				});
	}
	public List findAllByCriteria(final DetachedCriteria detachedCriteria) {
		return (List) getHibernateTemplate().execute(new HibernateCallback() {
			public Object doInHibernate(Session session)
					throws HibernateException {
				Criteria criteria = detachedCriteria
						.getExecutableCriteria(session);
				return criteria.list();
			}
		});
	}

	public int getCountByCriteria(final DetachedCriteria detachedCriteria) {
		Integer count = (Integer) getHibernateTemplate().execute(
				new HibernateCallback() {
					public Object doInHibernate(Session session)
							throws HibernateException {
						Criteria criteria = detachedCriteria
								.getExecutableCriteria(session);
						return criteria.setProjection(Projections.rowCount())
								.uniqueResult();
					}
				});
		return count.intValue();
	}
}
0
0
分享到:
评论

相关推荐

    java分页实现大全

    Java 分页实现是Java开发中常见的一种技术,用于在大量数据中进行高效的查询和展示,以提高用户体验并减轻服务器负载。在处理大数据集时,分页尤为重要,因为它允许用户逐步加载和浏览信息,而不是一次性加载所有...

    JAVA分页实现JAVA+JS+HTML

    在实际项目中,分页实现可能更为复杂,例如需要考虑性能优化,比如预加载相邻页数据,或者使用懒加载来减少初始加载时间。同时,现代前端框架如React、Vue或Angular提供了更高级的分页组件和状态管理工具,简化了...

    java分页实现(有详细注释)

    原来也经常会用到别人写的java分页工具,一直觉得总是有些欠缺,自己也喜欢玩,就自己重新写了个java的分页实现,一来可以更加深入了解分页技术,提高自己的编码和设计能力,二来自己写的东西,原理和实现都熟悉,将来复用时...

    java分页实现(面向对象)

    总的来说,Java中的分页实现主要涉及以下几个步骤: 1. 设计一个`Page`类来封装分页信息。 2. 编写服务类,如`PageService`,提供分页查询方法,包含SQL的构造、执行以及结果转换。 3. 针对不同的数据库操作工具...

    java分页代码完整版

    本资源中的"fenye"可能包含的是一个完整的Java分页实现项目,包括了上述各种方式的代码示例,通过学习和运行这些代码,你可以深入理解Java分页的原理和实现方法,并能将其应用于实际项目中。请下载并仔细研究,祝你...

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

    本资源包"java分页大全"提供了多种Java分页实现,旨在帮助开发者更高效地进行数据查询和展示。 首先,我们来探讨一下Java分页的基本原理。分页通常涉及两个关键部分:一是计算当前页的数据范围,二是根据这个范围从...

    java实现分页 jsp分页 分页

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

    最简单的java分页,代码最少,最易懂

    本教程将详细介绍一个简单、代码量少且易于理解的Java分页实现方法。 首先,我们要理解分页的基本概念。分页通常涉及到两个关键参数:当前页数(Page Number)和每页大小(Page Size)。通过这两个参数,我们可以...

    java 分页思想

    本资料包提供了一个详细的Java分页实现文档,包括代码示例、数据库设计以及相关图解,帮助开发者深入理解并实践Java分页。 1. **分页原理** 分页的基本思想是将大量数据分为多个部分,每次只加载一部分(一页)...

    mysql数据库实现分页

    以下是对分页实现的详细说明: 一、基础概念 分页是将数据库查询结果分割成多个页面,每次请求只返回一部分数据,而不是一次性返回所有数据。这在Web应用中尤其常见,如搜索引擎、电商网站等,用户通常会通过点击...

    java简单分页.txt

    本文将详细介绍一种简单的Java分页实现方法,该方法不仅易于理解且广泛应用于基于JDBC(Java Database Connectivity)和Hibernate等技术栈的项目中。 #### 二、分页原理与实现 ##### 2.1 分页基本概念 分页是指将...

    java分页int pageSize:每页显示多少条记录

    主要内容包括四个关键变量的定义及其作用、分页算法的计算逻辑、SQL查询语句的编写方法,以及一个简单的Java分页实现示例。 ### 四个关键变量 在进行分页时,我们需要定义以下四个变量: 1. **`int pageSize`**:...

    java实现的一个分页程序

    1. **JDBC分页**:Java中的分页通常通过Java Database Connectivity (JDBC) API来实现。使用PreparedStatement和Statement对象,我们可以在SQL查询中添加LIMIT和OFFSET子句来限制返回的数据行数,从而实现分页。 2....

    java分页 个人整理

    二、Java分页实现方式 1. SQL语句实现:通过在SQL中添加LIMIT和OFFSET关键字(MySQL)或ROWNUM(Oracle)来限制返回的数据行数,实现分页。但这种方式效率较低,不适用于大数据量的场景。 2. 数据库连接池支持:如...

    JAVA分页JAVA分页.doc

    以上就是一个基本的Java分页实现过程,需要注意的是,实际应用中可能需要考虑更多细节,如错误处理、性能优化、用户体验等。此外,随着技术的发展,现在有很多成熟的分页库,如MyBatis的PageHelper、Spring Data JPA...

    java 分页源代码

    2. Java分页实现方式: - 自定义分页:开发者可以根据需求自行编写分页逻辑,包括计算页码、查询指定范围的数据等。这通常涉及到SQL的LIMIT或OFFSET子句,用于限制返回的数据量。 - 使用JDBC API:通过设置...

    自制java分页标签

    2. Java分页实现: 在Java中,可以使用各种框架如Spring MVC、Struts等来实现分页。一般会涉及以下几个步骤: - 数据库查询:通过SQL的LIMIT或OFFSET关键字,根据当前页和每页大小获取所需数据。 - 页面参数传递...

    JAVA分页代码宝典

    综上所述,【JAVA分页代码宝典】提供了全面的Java分页实现方法,涵盖了从基本的分页逻辑到高级特性的应用,对于理解和实现Java分页具有很高的参考价值。开发者可以根据自身需求,结合这些代码和思路,打造出高效、...

    Ajax实现Java分页

    在Java分页中,Ajax通过向后台发送请求获取新的分页数据,并在前端更新显示。 分页的基本流程通常包括以下步骤: 1. **前端页面设计**:创建一个包含分页导航的HTML页面,如页码链接或下拉框。页面应该有适当的...

    JAVA分页大全.pdf

    标题“JAVA分页大全.pdf”表明文档涉及的是Java编程语言...文档的内容虽然不完整,但提供的代码片段足以反映出Java分页实现的基本思想和常用方法。这对于理解Java分页机制,以及在实际项目中实现分页功能都是有帮助的。

Global site tag (gtag.js) - Google Analytics