基于Hibernate Query实现分页器

import java.util.List;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.ScrollableResults;
/** *//**
* <p>Title:分页器</p>
*
* <p>Description:</p>
*
* <p>Copyright: Copyright (c) 2006</p>
*
* <p>Company: </p>
*
* <p>Author: 一个人的日子</p>
*
* <p>Version: 1.0</p>
*
* <p>Create Date: 2006-08-17</p>
*
*/
public class Page ...{
private List result; //结果集
  private int pageSize; //页大小
  private int startPage; //起始页 从1开始
  private ScrollableResults scrollableResults;
  private int totalResults; //总记录的条数
  private int totalPages; //总页数
  
public Page (int startPage,int pageSize,Query query)...{
 this.startPage=startPage;
   this.pageSize=pageSize;
   this.result=null;  
   try ...{
  this.scrollableResults=query.scroll();
  this.scrollableResults.last();
  if(scrollableResults.getRowNumber()>=0)...{
  this.totalResults=this.scrollableResults.getRowNumber() + 1;
  } else ...{
  this.totalResults=0;
  }
  setTotalPages();
  result=query.setFirstResult((this.getStartPage()-1)*this.pageSize).setMaxResults(this.pageSize).list();
 } catch (HibernateException e) ...{
  e.printStackTrace();
 }
  }
/** *//**
 * 得到查询结果
 * @return 查询结果
 */
public List getResult() ...{ 
 return result;
}
/** *//**
 * 得到起始页
 * @return
 */
public int getStartPage() ...{
 if(startPage<1)...{
  startPage= 1;
 }
 if(startPage>totalPages)...{
  startPage=totalPages;
 }
 return startPage;
}
/** *//**
 * 得到记录总数
 * @return
 */
public int getTotalResults() ...{
 return totalResults;
}
/** *//**
 * 得到页大小
 * @return
 */
public int getPageSize() ...{
    return pageSize;
  }
/** *//**
 * 判断是否是第一页
 * @return
 */
public boolean isFirstPage()...{
 return this.startPage==1;
}
/** *//**
 * 判断是否是有后一页
 * @return
 */
public boolean hasNextPage()...{
 return this.startPage<this.totalPages;
}
/** *//**
 * 判断是否是有前一页
 * @return
 */
public boolean hasPreviousPage()...{
 return this.startPage>1;
}
/** *//**
 * 设置总页数
 *
 */
private void setTotalPages() ...{
 this.totalPages=this.totalResults/this.pageSize;
 if(totalPages*pageSize<totalResults)...{
  totalPages++;
 }
}
/** *//**
 * 得到总页数
 * @return
 */
public int getTotalPages() ...{
 return totalPages;
}
}

时间: 2024-10-23 13:37:24

基于Hibernate Query实现分页器的相关文章

针对SaaS应用程序的基于Hibernate框架的数据库分片

针对 SaaS 应用程序的基于 Hibernate 框架的数据库分片 SaaS 正在改变设计.构建.部署和操作应用程序的方式.开发一个 SaaS 应用程序与开发一个通用企业应用程序之间的关键区别在于,SaaS 应用程序必须是多租户的.其他关键 SaaS 需求,比如安全性.定制.面向服务的架构(SOA)和集成,也影响 SaaS 应用程序架构. 多租户是指应用程序在单一代码库内寄存多个承租者并共享数据库等架构的能力.有多种设计选项可启用多租户数据架构 - 每个承租者的专用数据库.每个承租者的共享数据

基于hibernate实现的分页技术实例分析_java

本文实例讲述了基于hibernate实现的分页技术.分享给大家供大家参考,具体如下: 先说明一下基于hibernate实现分页的原理,假如从数据库取出100条数据,我们要让每页显示10条,假如从30开始,只需要设置起始位置和最大的返回结果即可 先上代码:注意传进来的参数有 Page这类,后面有介绍 public List<Article> queryByPage(final String username, final Page page) { return this.getHibernate

HQL: The Hibernate Query Language

Chapter 14. HQL: The Hibernate Query Language 14.1. Case Sensitivity 14.2. The from clause 14.3. Associations and joins 14.4. Forms of join syntax 14.5. Referring to identifier property 14.6. The select clause 14.7. Aggregate functions 14.8. Polymorp

Hibernate: org.hibernate.query.list内存消耗过大的问题?

问题描述 使用JProfiler进行性能测试时发现如下情况: 在程式不停的运行中,query.list分配的内存不会被回收.不断创建新的instance. 是多线程运行的程序. 使用Query的方法如下:   public List find(String strhql) {          // TODO Auto-generated method stub            List result = null;          Session session = null;   

基于Hibernate和Struts的J2EE应用开发

引言 随着Java技术的逐渐成熟与完善,作为建立企业级应用的标准平台,J2EE平台得到了长足的发展.借助于J2EE规范中包含的多项技术:Enterprise JavaBean(EJB).Java Servlets(Servlet).Java Server Pages(JSP).Java Message Service(JMS)等,开发出了许多应用系统.但是,在传统J2EE应用的开发过程中也出现了一些问题:1)数据模型和逻辑模型之间的矛盾.目前使用的数据库基本上都是关系型数据库,而Java本质上是

基于 Hibernate缓存的Ehcache让实体对象集合对象缓存

考虑到效率和对数据库的压力,使用缓存或者内存缓存,可以提高反应速度和减轻数据库压力.hibernate中支持的比较多,在hibernate给的文档"提升性能"章节有详细介绍: hibernate支持缓存类型和介绍: 后面三个还支持集群,比较强大. 现在详细介绍Ehcache使用: Ehcache所需要的jar包(配合hibernate使用): 加入配置文件: <ehcache> <!-- Sets the path to the directory where cac

基于HIBERNATE的动态列表

利用HIBERNAGTE要实现如下功能: 列表-hibernate 动态sql">也就是在下方选择要显式的项目,则在上方列表显式. 具体实现: Struts2实现: <table width="100%" cellspacing="1" class="l_table"> <tr class="l_title"> <s:iterator value="showItems&q

关于基于Hibernate留言板的疑惑,hibernate自动获取关联对象的问题

问题描述 只有用户,和留言两个表,POJO如下: public class Article {private Integer id;private String title;private String content;private User user; //省略setter,getter}  public class User {private Integer id;private String username;private String password;private Set<Art

基于JQuery的Pager分页器实现代码_jquery

实例效果图如下 使用说明 需要使用jQuery库文件和JQuery Pager库文件(目前版本1.1) 素材准备 分页器CSS样式文件,可复制如下CSS样式,可命名为Pager.css 复制代码 代码如下: #pager ul.pages { display:block; border:none; text-transform:uppercase; font-size:10px; margin:10px 0 50px; padding:0; } #pager ul.pages li { list