package com.ada.dao.impl;
import org.hibernate.Criteria;
import org.hibernate.criterion.Projections;
import com.ada.bean.Page;
public class MyDAOSupport {
/** 分页查询方法
* ada 2010-6-28
* @param cri:查询条件对象
* @param page:分页对象
* @return page:分页对象
*/
protected Page getQueryPage(Criteria cri,Page page){
int count = ((Long)cri.setProjection(Projections.rowCount()).uniqueResult()).intValue();
cri.setProjection(null);
page.setSumcount(count);//总记录数
int pagenum=count/page.getPagesize();
if(count%page.getPagesize()!=0)
pagenum+=1;
page.setPagecount(pagenum);//总页数
int startNo=(page.getCurpage()-1)*page.getPagesize();
int endNo=startNo+page.getPagesize();
cri.setFirstResult(startNo);
cri.setMaxResults(endNo);
page.setResult(cri.list());
return page;
}
}
调用例子:
package com.ada.dao.impl;
import java.util.List;
import org.hibernate.Criteria;
import org.hibernate.Query;
import org.hibernate.Session;
import com.ada.bean.Page;
import com.ada.bean.User;
import com.ada.dao.UserDAO;
import com.ada.util.HibernateUtil;
public class UserDAOImpl extends MyDAOSupport implements UserDAO {
public Page queryUserPages(Page page) {
Session s=null;
try{
s=HibernateUtil.getSession();
Criteria cri = s.createCriteria(User.class);
return getQueryPage(cri,page);
}finally{
if(s!=null)
s.close();
}
}
public Page queryUserPagesByDeptid(String deptid,Page page){
Session s=null;
try{
s=HibernateUtil.getSession();
Criteria cri = s.createCriteria(User.class);
cri.add(Restrictions.eq("deptid",Long.valueOf(deptid)));
return getQueryPage(cri,page);
}finally{
if(s!=null)
s.close();
}
}
}
分页对象
package com.ada.bean;
import java.util.List;
public class Page {
private int pagesize;//每页显示个数
private int curpage;//当前页
private int pagecount;//总页数
private int sumcount;//总记录数
private List result;
public int getSumcount() {
return sumcount;
}
public void setSumcount(int sumcount) {
this.sumcount = sumcount;
}
public int getPagecount() {
return pagecount;
}
public void setPagecount(int pagecount) {
this.pagecount = pagecount;
}
public int getCurpage() {
return curpage;
}
public void setCurpage(int curpage) {
this.curpage = curpage;
}
public int getPagesize() {
return pagesize;
}
public void setPagesize(int pagesize) {
this.pagesize = pagesize;
}
public List getResult() {
return result;
}
public void setResult(List result) {
this.result = result;
}
}
注:
可结合struts2自定义分页标签做前台展示
见
http://adaqian.iteye.com/blog/707539
分享到:
相关推荐
Hibernate分页查询小结
#### 三、Hibernate分页查询实现原理 ##### 3.1 使用SQL LIMIT实现分页 对于支持LIMIT关键字的数据库(例如MySQL),Hibernate会通过特定的方言(Dialect)来生成包含LIMIT关键字的SQL语句。具体实现如下: ```...
此外,优化查询,避免N+1查询问题,合理设计实体关系,都能有效提升Hibernate分页查询的效率。 总结起来,Hibernate的分页查询和数据库连接管理是其强大功能的重要组成部分。正确理解和使用这些特性,能够帮助...
让我们深入探讨Hibernate分页查询的相关知识点。 一、Hibernate分页原理 Hibernate分页查询基于SQL的LIMIT和OFFSET子句,通过Session的createQuery或createSQLQuery方法创建查询,并设置FirstResult和MaxResults...
本篇主要围绕"Hibernate分页查询效果"这一主题,深入探讨如何利用Hibernate框架实现高效、便捷的分页功能。 首先,Hibernate是一个优秀的Java持久化框架,它提供了ORM(对象关系映射)解决方案,使得开发者可以使用...
1. **配置Hibernate分页**: 在Hibernate中,我们通常使用`Criteria`或`Query` API进行分页查询。`Criteria`提供了一种更面向对象的方式来执行SQL查询,而`Query` API则对应于原生的SQL语句。在这些API中,我们可以...
**Hibernate分页查询** Hibernate支持两种分页方式:Criteria API和HQL(Hibernate Query Language)。Criteria API可以通过DetachedCriteria对象创建查询条件,然后调用setFirstResult和setMaxResults方法实现分页...
### WebWork 2.2.7 + Spring + Hibernate 分页查询技术详解 #### 一、项目背景及架构 本项目采用WebWork 2.2.7框架结合Spring和Hibernate技术实现了一个基本的用户数据分页查询功能。主要目标是根据用户输入的...
本示例中,我们看到如何利用Struts2、Spring和Hibernate这三个流行框架来实现分页查询功能。下面我们将详细讲解这个实现过程。 1. **UserDao接口**: UserDao接口定义了分页查询的方法,通过`getUser(int offset, ...
在这个类中,我们可以通过编写Hibernate HQL或SQL查询语句来实现分页查询。 4. **Struts2 Action** 在Action类中,我们需要处理来自用户的请求参数,如当前页码和每页显示记录数等,并调用DAO中的分页查询方法获取...
### Hibernate 实现分页查询详解 #### 一、引言 在进行数据库操作时,为了提高用户体验和系统性能,分页查询是一项非常重要的技术。Hibernate作为Java领域内一个优秀的对象关系映射(ORM)框架,提供了强大的数据...
这个压缩包提供的案例是这三个框架的整合使用,涵盖了基本的CRUD(创建、读取、更新、删除)操作,并且包含了分页查询的功能。下面将详细讲解这些知识点。 1. **Spring MVC** - Spring MVC是Spring框架的一个模块...
在Hibernate中,我们可以通过设置FirstResult(对应于SQL的LIMIT开始位置)和MaxResults(对应于SQL的LIMIT大小)参数来实现分页查询。 以下是一个简单的示例,展示如何在Spring和Hibernate中实现组合查询和分页: ...
在分页查询中,Hibernate提供了一种称为HQL(Hibernate Query Language)的SQL方言,可以方便地实现复杂的查询,包括分页查询。此外,Hibernate还支持Criteria查询,这是一种更加面向对象的查询方式,同样可以实现...
至于“Hibernate分页查询原理解读”,这可能是一个深入解析Hibernate分页机制的文档,包括`FirstResult`和`MaxResults`参数的使用,以及如何有效地缓存查询结果以提高性能。 综合来看,这个压缩包包含了一系列关于...
使用Hibernate进行分页查询时,可以通过设置`FirstResult`和`MaxResults`来限制查询结果集的范围。 ```java Query queryObject = getSession().createQuery("FROM User"); queryObject.setFirstResult((currentPage...
通用查询页面中的查询项、查询出的分页列表都是自动生成的。开发简便、快速,附件中是一套完整的demo和使用说明 支持全部Hql语法格式 Awake 后续功能扩展 1.XML格式数据输出,保证了ajax用户也可以使用Awake框架...
4. **Hibernate分页查询**:在DAO中,使用Session的createQuery或createCriteria方法,结合PageHelper(或其他分页插件)进行分页查询。PageHelper会自动计算总页数,并返回当前页的数据和总记录数。 5. **返回结果...
接下来,我们讨论分页查询。在处理大量数据时,一次性加载所有结果可能会导致性能问题。因此,通常会采用分页的方式来获取数据。在Hibernate中,我们可以使用`Criteria`或`Query`对象的`setFirstResult()`和`...