`

基于HibernateDaoSupport的分页

阅读更多

基于HibernateDaoSupport的三个分页控制方法
package com.lbx.chat.paging;

import java.sql.SQLException;
import java.util.List;

import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.springframework.orm.hibernate3.HibernateCallback;
import org.springframework.orm.hibernate3.HibernateTemplate;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

/**
 * 基于HibernateDaoSupport的三个分页控制方法
 * @author Administrator
 *
 */
public class PageDaoHibernateDaoSupport extends HibernateDaoSupport {

	/**
	 * 使用HQL语句进行分页查询操作
	 * offset 第一条记录的索引
	 * pageSize 每页需要显示的记录数
	 * @return 当前页的所有记录
	 */
	public List findByPage(final String hql, final int offset, final int pageSize){
		List list = getHibernateTemplate().executeFind(new HibernateCallback() {
			
			public Object doInHibernate(Session session) throws HibernateException,
					SQLException {
				List result = session.createQuery(hql).setFirstResult(offset)
								.setMaxResults(pageSize)
								.list();
				return result;
			}
		});
		return list;
	}
	
	/**
	 * 使用HQL语句进行分页查询操作
	 * value 如果HQL有一个参数需要传人,则value就是传人的参数
	 * offset 第一条记录的索引
	 * pageSize 每页需要显示的记录数
	 * @return 当前页的所有记录
	 */
	public List findByPage(final String hql, final Object value,  final int offset, final int pageSize){
//System.out.println("PageDaoHibernate.findByPage()");
		List list = getHibernateTemplate().executeFind(new HibernateCallback() {
			
			public Object doInHibernate(Session session) throws HibernateException,
					SQLException {
				List result = session.createQuery(hql).setFirstResult(offset)
								.setParameter(0, value)
								.setMaxResults(pageSize)
								.list();
				return result;
			}
		});
		return list;
	}
	
	/**
	 * 使用HQL语句进行分页查询操作
	 * values 如果HQL有多个参数需要传人,则values就是传人的参数数组
	 * offset 第一条记录的索引
	 * pageSize 每页需要显示的记录数
	 * @return 当前页的所有记录
	 */
	public List findByPage(final String hql, final Object[] values,  final int offset, final int pageSize){
		List list = getHibernateTemplate().executeFind(new HibernateCallback() {
			
			public Object doInHibernate(Session session) throws HibernateException,
					SQLException {
				Query query = session.createQuery(hql);
				for (int i = 0; i < values.length; i++) {
					query.setParameter(i, values[i]);
				}
				List result = query.setFirstResult(offset)
								.setMaxResults(pageSize)
								.list();
				return result;
			}
		});
		return list;
	}

}
 

分享到:
评论

相关推荐

    HibernateDaoSupport分页.

    这段代码实现了基于`findAllByPage`方法的分页查询逻辑,它计算出当前页面的起始索引`start`,然后调用之前定义的`findByPage`方法进行分页查询。 #### 三、总结 通过以上分析可以看出,利用`HibernateDaoSupport`...

    STRUTS2+HIBERNATE详细的分页实现代码详细的分页实现代码

    Struts2是一个开源的Web应用程序框架,基于MVC设计模式构建而成。它简化了Java Web应用的开发过程,提供了一套易于使用的API,用于处理HTTP请求,并将数据传递给模型层进行业务逻辑处理,最后将结果返回到视图层进行...

    简单,高效的ssh分页源码

    该类继承自`HibernateDaoSupport`,实现了`PaginateInterface`接口,主要负责具体的分页逻辑实现: - 使用Hibernate进行数据库操作。 - 提供具体的方法实现来完成分页功能。 ### 知识点六:Hibernate分页查询实现 ...

    struts2+spring+hibernate分页显示完整代码

    本篇文章将详细讲解如何在基于Struts2、Spring和Hibernate的项目中实现分页功能。 首先,我们从DAO层开始。在`MemberDao`接口中,我们定义了两个关键的方法,一个是用于分页查询,另一个是获取所有记录的数量。这两...

    高效率spring+struts+hibernate分页算法

    本篇文章将详细介绍一种基于Spring、Struts和Hibernate框架实现的高效分页算法,并通过具体的代码示例来解释其实现原理及应用。 #### 二、分页的基本概念 分页是指将大量的数据分成多个页面展示的技术手段。在Web...

    Hibernate分页封装

    Criteria API是一种基于对象的查询语言,可以用来执行SELECT、INSERT、UPDATE和DELETE操作。下面是一个简单的Hibernate分页封装的示例代码: ```java public class Happer extends HibernateDaoSupport { private ...

    使用pager-taglib实现分页显示的详细步骤

    `pager-taglib`是一个基于JSTL的分页标签库,能够简化分页逻辑的编写。 #### 二、创建PageModel类 在项目的utils包下创建一个`PageModel`类,该类用于封装分页后的数据和总记录数。示例如下: ```java package ...

    ssh分页笔记

    本文将基于提供的`MemberDao.java`接口和其实现类`MemberDaoImpl.java`以及分页辅助类`PageBean.java`,详细介绍如何通过SSH框架来实现数据分页功能。 #### 二、接口定义:MemberDao.java `MemberDao.java`定义了...

    hibernateTemplate和HibernateDaoSupport

    hibernateTemplate 和 HibernateDaoSupport 是 Spring 框架中针对 Hibernate 数据库访问层的两个重要组件,它们简化了基于 Hibernate 的数据操作,使得开发者能够更高效地进行 CRUD(创建、读取、更新、删除)操作。...

    ssh2分页代码

    本篇文章将详细介绍如何在基于SSH2(Spring + Hibernate + Struts2)框架的项目中实现分页功能。通过合理的分层设计和组件集成,我们可以有效地解决分页问题,并保持良好的代码结构和性能表现。 #### 二、分层设计...

    三大框架整合实现分页

    本文将深入探讨如何在三大框架整合的环境下实现分页,基于提供的文件信息进行详细解析。 ### 分页概念理解 分页是在大量数据集中按需展示特定部分数据的一种方式,避免一次性加载全部数据导致的性能问题或用户界面...

    java大作业基于SSH框架的学生成绩管理系统源码.zip

    java基于SSH框架的学生成绩管理系统源码。要求: (1) 整合Struts2、Spring和Hibernate框架 (2) 实现“登录”功能 (3) 实现“学生信息管理”功能 (4) 实现“学生成绩管理”功能 (5) 实现分页功能 目的...

    HibernateSpringStruts2整合开发中的一个分页显示方案.doc

    在基于Java的企业级Web开发中,常常采用SSH(Spring、Struts2、Hibernate)框架进行整合开发。在大型系统中,为了提高用户体验和系统性能,分页显示是必不可少的功能。本篇文章将详细介绍如何在SSH整合开发中实现一...

    SSH实现分页查

    - **Struts**:一个基于MVC模式的Java Web应用框架,它为创建企业级Java Web应用程序提供了一套标准的方法。 - **Hibernate**:一个对象关系映射(ORM)工具,用于将Java对象映射到关系型数据库表中,并提供了高级...

    struts2_spring_hibernate_分页显示.doc

    在现代Web应用开发中,特别是基于Java平台的企业级应用,Struts2、Spring 和 Hibernate 是非常重要的三大框架。其中,Struts2 负责前端表现层逻辑的控制,Spring 提供了强大的业务逻辑层管理和依赖注入功能,而 ...

    使用配置文件对DAO层封装具有分页功能的S2SH整合实例_好资源0分送

    - 为了确保本次整合完全基于配置文件,需要首先移除原有的使用Annotation的方式,确保代码中不存在任何Spring或Hibernate相关的注解。 2. **更新Spring配置文件**: - **`applicationContext.xml`**: 此配置文件...

    基于ssh架构的学生成绩管理系统.doc

    4. **分页功能**:为了方便用户查看大量数据,系统实现了分页功能。这通常涉及到SQL的LIMIT或OFFSET语句,以及在前端展示时的页码控制。 系统实现过程中,一般遵循以下步骤: 1. 数据库设计:创建数据库和相关表,...

    基于J2EE框架的个人博客系统项目毕业设计论文(源码和论文)

    伴随着Internet的迅速发展,计算机技术正在由基于C/S(client/ Server)模式的应用系统转变为基于B/S模式的应用系统。 过去,网络软件的开发都采用C/S(client)模式,在这种模式下,主要的业务逻辑都集中于客户端...

    javaee源代码ssh

    3. 注入 JdbcTemplate:对于不喜欢 Hibernate 提供的方法,更倾向于自定义 SQL 的开发者,可以选择使用 Spring 的 JdbcTemplate,它提供了基于原生 SQL 的操作接口。 每种方式都有其适用场景和优缺点,选择哪种方式...

Global site tag (gtag.js) - Google Analytics