`

基于Spring容器中的hibernateTemplate的分页

阅读更多

基于hibernateTemplate的三个分页控制方法
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;

/**
 * 基于hibernateTemplate的三个分页控制方法
 * @author Administrator
 *
 */

public class PageDaoHibernate {
	
	private HibernateTemplate hibernateTemplate;
	
	/**
	 * 使用HQL语句进行分页查询操作
	 * offset 第一条记录的索引
	 * pageSize 每页需要显示的记录数
	 * @return 当前页的所有记录
	 */
	public List findByPage(final String hql, final int offset, final int pageSize){
		List list = hibernateTemplate.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 = hibernateTemplate.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 = hibernateTemplate.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;
	}

	public HibernateTemplate getHibernateTemplate() {
		return hibernateTemplate;
	}

	public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {
		this.hibernateTemplate = hibernateTemplate;
	}
	
}
 

分享到:
评论

相关推荐

    S2SH购物车+HibernateTemplate分页

    总的来说,"S2SH购物车+HibernateTemplate分页"项目是一个综合性的学习资源,涵盖了Java Web开发中的关键技术和实践,对于理解SSH框架的整合和实际应用具有很高的参考价值。通过这个项目,开发者可以深入理解如何在...

    struts+hibernate+spring框架整合做分页

    在分页中,Hibernate可以通过HQL(Hibernate Query Language)或者 Criteria API 来实现对数据库的查询,同时提供Limit和Offset方法来实现数据的分页。 Spring框架作为核心的容器,它可以管理和装配这些框架的组件...

    spring+struts+hibernate实现分页

    总的来说,通过Spring、Struts和Hibernate的集成,我们可以构建出一个强大的Web应用框架,其中分页功能的实现主要依赖于Spring管理的SessionFactory、Struts的Action和Spring的IoC容器,以及自定义的PageUtil和Page...

    spring使用心得 java ssh

    在Spring容器中,对象的属性通常是通过setter方法注入的。如果出现“no setter found for property”的错误,那可能是因为缺少对应的setter方法,或者在配置文件中误将属性名写错,导致Spring无法完成依赖注入。 ...

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

    在基于Java的Web开发中,Hibernate、Spring和Struts2的整合是常见的技术栈,用于构建高效、可维护的企业级应用程序。在这个特定的分页显示方案中,开发者使用了这三种技术来解决在大型数据集展示时的分页问题。 1. ...

    hibernate Struts2 spring 分页 国际化 表单验证 退出 最终修改版

    标题中的“Hibernate Struts2 Spring 分页 国际化 表单验证 退出 最终修改版”揭示了一个基于Java EE的Web应用项目,这个项目整合了三个关键的技术框架:Hibernate、Struts2和Spring,同时涵盖了分页、国际化、表单...

    第24次课-1 Spring与Hibernate的整合

    Spring提供了org.springframework.orm.hibernate3.HibernateTemplate类和org.springframework.orm.hibernate3.HibernateCallback接口来方便和Hibernate整合。 HibernateTemplate类封装了Hibernate的主要类,它提供了...

    Spring.3.x企业应用开发实战(完整版).part2

    4.11.2 使用基于Java类的配置信息启动Spring容器 4.12 不同配置方式比较 4.13 小结 第5章 Spring容器高级主题 5.1 Spring容器技术内幕 5.1.1 内部工作机制 5.1.2 BeanDefinition 5.1.3 InstantiationStrategy 5.1.4 ...

    hibernateDaoSurpport和hibernateTemplate

    - `setSessionFactory`方法用于接收Spring IoC容器的依赖注入,它可以接受配置在Spring中的`SessionFactory`实例。 - `getHibernateTemplate`方法则根据`SessionFactory`生成`HibernateTemplate`,从而完成数据库...

    Spring3.x企业应用开发实战(完整版) part1

    4.11.2 使用基于Java类的配置信息启动Spring容器 4.12 不同配置方式比较 4.13 小结 第5章 Spring容器高级主题 5.1 Spring容器技术内幕 5.1.1 内部工作机制 5.1.2 BeanDefinition 5.1.3 InstantiationStrategy 5.1.4 ...

    struts + hibernate+sprig 的分页源代码

    在分页实现中,Spring可以管理Struts中的Action和Hibernate中的SessionFactory,使得各组件之间的耦合度降低。此外,Spring的Transaction Management可以处理分页查询过程中的事务,确保数据的一致性。 4. **分页...

    Struts Hibernate Spring 集成开发框架

    Struts、Hibernate和Spring是Java开发中非常流行的三个框架,它们在Web开发中扮演着重要的角色,通常被称为SSH框架。Struts主要负责MVC模式中的视图和控制器部分,Hibernate是对象关系映射(ORM)工具,用于处理Java...

    SSH基础上分页功能的实现

    4. **创建分页信息容器**:在业务逻辑层,我们需要创建一个`PageBean`或类似的对象,用于存储分页的相关信息,如当前页、总页数、每页记录数等。 ```java public class PageBean&lt;T&gt; { private int pageNo; ...

    Struts2+Hibernate+Spring三大框架集成范例

    3. **Spring**:Spring框架提供了依赖注入,使得对象之间的依赖关系在编译时并不固定,而是由Spring容器在运行时动态注入。在SSH集成中,Spring管理Struts2的Action和Hibernate的SessionFactory,通过配置bean来实例...

    HibernateS整合pring

    【Spring 整合 Hibernate】是Java企业级应用中常见的技术结合,它允许开发者利用Spring的IoC容器管理和事务处理能力,结合Hibernate的ORM(对象关系映射)功能,以提高开发效率和应用性能。SSH(Struts、Spring、...

    SSH整合练习增删改查

    在这个项目中,Spring作为整个应用的容器,管理了Struts2和Hibernate的实例,同时可能还用于事务管理,确保数据的一致性。 4. **排序与搜索**:在描述中提到了排序和搜索功能,这通常涉及到SQL查询的ORDER BY子句和...

    struts+hibernate+Spring面试题

    3. Spring与Hibernate整合:通过HibernateTemplate或SessionFactoryBean,Spring可以管理Hibernate的Session,提供事务管理。 面试题通常会深入探究这些框架的配置、使用、性能优化等方面,以及它们如何协同工作以...

    javaee源代码ssh

    Struts 提供了 MVC(模型-视图-控制器)设计模式,Spring 作为整体的框架容器,管理应用组件和事务处理,而 Hibernate 则是 ORM(对象关系映射)工具,负责数据库操作。 在 JavaEE 应用中,使用 SSH 框架进行源代码...

    普通的ssh框架的整合

    Spring是一个全方位的应用开发框架,它提供了一个容器来管理对象的生命周期和依赖关系,同时提供了AOP(面向切面编程)功能,用于处理事务、日志等通用任务。在SSH整合中,Spring作为核心,负责控制反转(IOC)和...

Global site tag (gtag.js) - Google Analytics