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 ");
else {
pageBar.append("<a href='").append(url).append(temp).append(
"currentPage=1'>First</a> ");
pageBar.append("<a href='").append(url).append(temp).append(
"currentPage=").append(page.getPrePage()).append(
"'>Previous</a> ");
}
if (page.isLastPage())
pageBar.append("Next Last ");
else {
pageBar.append("<a href='").append(url).append(temp).append(
"currentPage=").append(page.getNextPage()).append(
"'>Next</a> ");
pageBar.append("<a href='").append(url).append(temp).append(
"currentPage=").append(page.getPageCount()).append(
"'>Last</a> ");
}
pageBar.append(" Total Page:").append(page.getPageCount()).append(
" ");
pageBar.append(" 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();
}
}
分享到:
相关推荐
Java 分页实现是Java开发中常见的一种技术,用于在大量数据中进行高效的查询和展示,以提高用户体验并减轻服务器负载。在处理大数据集时,分页尤为重要,因为它允许用户逐步加载和浏览信息,而不是一次性加载所有...
在实际项目中,分页实现可能更为复杂,例如需要考虑性能优化,比如预加载相邻页数据,或者使用懒加载来减少初始加载时间。同时,现代前端框架如React、Vue或Angular提供了更高级的分页组件和状态管理工具,简化了...
原来也经常会用到别人写的java分页工具,一直觉得总是有些欠缺,自己也喜欢玩,就自己重新写了个java的分页实现,一来可以更加深入了解分页技术,提高自己的编码和设计能力,二来自己写的东西,原理和实现都熟悉,将来复用时...
总的来说,Java中的分页实现主要涉及以下几个步骤: 1. 设计一个`Page`类来封装分页信息。 2. 编写服务类,如`PageService`,提供分页查询方法,包含SQL的构造、执行以及结果转换。 3. 针对不同的数据库操作工具...
本资源中的"fenye"可能包含的是一个完整的Java分页实现项目,包括了上述各种方式的代码示例,通过学习和运行这些代码,你可以深入理解Java分页的原理和实现方法,并能将其应用于实际项目中。请下载并仔细研究,祝你...
本资源包"java分页大全"提供了多种Java分页实现,旨在帮助开发者更高效地进行数据查询和展示。 首先,我们来探讨一下Java分页的基本原理。分页通常涉及两个关键部分:一是计算当前页的数据范围,二是根据这个范围从...
java实现分页 jsp分页 分页java实现分页 jsp分页 分页java实现分页 jsp分页 分页java实现分页 jsp分页 分页java实现分页 jsp分页 分页java实现分页 jsp分页 分页
本教程将详细介绍一个简单、代码量少且易于理解的Java分页实现方法。 首先,我们要理解分页的基本概念。分页通常涉及到两个关键参数:当前页数(Page Number)和每页大小(Page Size)。通过这两个参数,我们可以...
本资料包提供了一个详细的Java分页实现文档,包括代码示例、数据库设计以及相关图解,帮助开发者深入理解并实践Java分页。 1. **分页原理** 分页的基本思想是将大量数据分为多个部分,每次只加载一部分(一页)...
以下是对分页实现的详细说明: 一、基础概念 分页是将数据库查询结果分割成多个页面,每次请求只返回一部分数据,而不是一次性返回所有数据。这在Web应用中尤其常见,如搜索引擎、电商网站等,用户通常会通过点击...
本文将详细介绍一种简单的Java分页实现方法,该方法不仅易于理解且广泛应用于基于JDBC(Java Database Connectivity)和Hibernate等技术栈的项目中。 #### 二、分页原理与实现 ##### 2.1 分页基本概念 分页是指将...
主要内容包括四个关键变量的定义及其作用、分页算法的计算逻辑、SQL查询语句的编写方法,以及一个简单的Java分页实现示例。 ### 四个关键变量 在进行分页时,我们需要定义以下四个变量: 1. **`int pageSize`**:...
1. **JDBC分页**:Java中的分页通常通过Java Database Connectivity (JDBC) API来实现。使用PreparedStatement和Statement对象,我们可以在SQL查询中添加LIMIT和OFFSET子句来限制返回的数据行数,从而实现分页。 2....
二、Java分页实现方式 1. SQL语句实现:通过在SQL中添加LIMIT和OFFSET关键字(MySQL)或ROWNUM(Oracle)来限制返回的数据行数,实现分页。但这种方式效率较低,不适用于大数据量的场景。 2. 数据库连接池支持:如...
以上就是一个基本的Java分页实现过程,需要注意的是,实际应用中可能需要考虑更多细节,如错误处理、性能优化、用户体验等。此外,随着技术的发展,现在有很多成熟的分页库,如MyBatis的PageHelper、Spring Data JPA...
2. Java分页实现方式: - 自定义分页:开发者可以根据需求自行编写分页逻辑,包括计算页码、查询指定范围的数据等。这通常涉及到SQL的LIMIT或OFFSET子句,用于限制返回的数据量。 - 使用JDBC API:通过设置...
2. Java分页实现: 在Java中,可以使用各种框架如Spring MVC、Struts等来实现分页。一般会涉及以下几个步骤: - 数据库查询:通过SQL的LIMIT或OFFSET关键字,根据当前页和每页大小获取所需数据。 - 页面参数传递...
综上所述,【JAVA分页代码宝典】提供了全面的Java分页实现方法,涵盖了从基本的分页逻辑到高级特性的应用,对于理解和实现Java分页具有很高的参考价值。开发者可以根据自身需求,结合这些代码和思路,打造出高效、...
在Java分页中,Ajax通过向后台发送请求获取新的分页数据,并在前端更新显示。 分页的基本流程通常包括以下步骤: 1. **前端页面设计**:创建一个包含分页导航的HTML页面,如页码链接或下拉框。页面应该有适当的...
标题“JAVA分页大全.pdf”表明文档涉及的是Java编程语言...文档的内容虽然不完整,但提供的代码片段足以反映出Java分页实现的基本思想和常用方法。这对于理解Java分页机制,以及在实际项目中实现分页功能都是有帮助的。