`
dd350356750
  • 浏览: 75001 次
  • 性别: Icon_minigender_1
  • 来自: 怀化
社区版块
存档分类
最新评论

hibernate 组合查询且分页

阅读更多
分页的核心代码

package com.crm.dao;

import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.criterion.Example;
import org.hibernate.criterion.MatchMode;

//hibernate 自动创建的一个工厂类
import com.crm.util.HibernateSessionFactory;

public class SplitDAO {


	//获得总共显示的页数,参数:allRows 总行数,pageSize 每页显示的行数
	private int getPages(int allRows, int pageSize) {
		return (allRows + pageSize - 1) / pageSize;
	}

	/*
	 * 获得总页数<br>
	 * parameter<br>
	 * Object obj 类对象<br>
	 * int pageSize 查询几条数据<br>
	 * int currPage 当前是第几页
	 * */
	public SplitBean split(Object obj, int pageSize, int currPage) throws Exception{
		SplitBean sb = new SplitBean();	
		try{
			Session session = HibernateSessionFactory.getSession();			
			Criteria cta = session.createCriteria(obj.getClass());
			// qbe不能用主键查询
			Example ex = Example.create(obj);
			ex.ignoreCase().enableLike(MatchMode.ANYWHERE);
			ex.excludeNone();
			ex.excludeZeroes();
	
			cta.add(ex);
			//获得有多少条数据
			List list = cta.list();		
			//总行数
			int allRows = list.size();
			//数据验证
			pageSize = pageSize<=0?10:pageSize;
			//所有显示的页数
			int pages = getPages(allRows,pageSize);
			//如果输入的当前页大于最大页数
			currPage=currPage > pages?pages:currPage;
			//如果输入的当前页小于等于0
			currPage=currPage<=0?1:currPage;
			
			
			cta.setFirstResult((currPage - 1) * pageSize);//设置起始查询的位置		
			cta.setMaxResults(pageSize);				 //设置一次最多查多少条数据
			
			
			List list2 = cta.list();						//查询出需要的数据
			
			
			//对封装类进行设置数据
			sb.setContent(list2);
			sb.setCurrPage(currPage);
			sb.setPageSize(pageSize);
			sb.setPages(pages);
			sb.setAllRows(allRows);
		}finally{
			HibernateSessionFactory.closeSession();
		}
		return sb;
	}

}


把分页的数据用一个实体对象保存

package com.crm.dao;

//封装分页显示数据类
import java.util.List;

public class SplitBean {

	private int allRows;	//总行数

	private int pageSize;	//显示行数

	private int currPage;	//当前页数
	
	private int pages;		//总页数

	private List content;	//显示数据

	
	
	public int getAllRows() {
		return allRows;
	}

	public void setAllRows(int allRows) {
		this.allRows = allRows;
	}

	public int getPageSize() {
		return pageSize;
	}

	public void setPageSize(int pageSize) {
		this.pageSize = pageSize;
	}

	public int getCurrPage() {
		return currPage;
	}

	public void setCurrPage(int currPage) {
		this.currPage = currPage;
	}

	public List getContent() {
		return content;
	}

	public void setContent(List content) {
		this.content = content;
	}

	public int getPages() {
		return pages;
	}

	public void setPages(int pages) {
		this.pages = pages;
	}

}



用hibernate 写的一个通用分页程序.
希望大家有更好的例子上传来给小弟学习学习
分享到:
评论

相关推荐

    基于spring+hibernate的组合查询+分页组件

    本篇文章将深入探讨如何结合Spring与Hibernate实现高效、灵活的组合查询以及分页功能,这对于提升Web应用程序的性能和用户体验至关重要。 首先,Spring框架是一个全面的Java企业级应用开发框架,它提供了依赖注入...

    基于Filter的组合查询加分页

    在Java Web开发中,"基于Filter的组合查询加分页"是一个常见的需求,它涉及到数据库查询优化、用户界面交互以及服务器性能管理等多个方面。Filter在Java Servlet规范中扮演着重要角色,用于在请求处理前或处理后执行...

    spring+hibernate 分页 +mysql

    这里我们讨论的是结合Spring、Hibernate和MySQL实现的分页功能,这是一个常见的技术栈组合,广泛应用于Web应用开发。 Spring是一个开源的Java框架,它提供了全面的编程和配置模型,用于构建企业级应用。Spring的IoC...

    Struts2中使用标签实现组合查询和带分页的例子

    本篇将重点讲解如何利用`sx:`标签实现组合查询和带分页功能。 首先,让我们了解下Struts2的`sx:`标签。它扩展了Struts2的OGNL(Object-Graph Navigation Language)表达式,使得在JSP页面中可以直接访问Action类中...

    Spring+Hibernate完整分页

    4. **编写分页逻辑**:在DAO层,使用HQL(Hibernate Query Language)或Criteria API来构造带有分页条件的查询。例如,`from User order by id asc limit ?, ?`,其中问号代表参数,分别是页码和每页大小。 5. **...

    spring+hibernate+c标签分页+mysql

    在这个特定的项目中,"spring+hibernate+c标签分页+mysql"组合,意味着开发者利用Spring作为整体架构,通过Hibernate进行数据持久化,同时使用了JSP中的C标签(JSTL Core Library)来实现前端页面的分页功能,并将...

    struts2.0 + hibernate + oracle 分页问题

    Struts2.0、Hibernate和Oracle的整合是Java Web开发中的常见组合,它们分别负责表现层、持久层和数据存储层。在这个项目中,我们关注的是分页问题,这是一个优化用户体验,提高系统性能的重要功能。分页使得大量数据...

    spring+struts2+hibernate整合实现分页

    6. **Hibernate的分页查询**:Hibernate提供`setFirstResult()`和`setMaxResults()`方法来实现分页查询。`setFirstResult()`设置从哪一条记录开始获取,`setMaxResults()`设置一次获取多少条记录。 7. **JSP页面...

    基于strus2,spring,hibernate的一个分页数据显示的小程序

    Struts2、Spring和Hibernate是Java企业级开发中三大核心框架,它们的组合使用能够构建出高效、可维护的Web应用程序。在这个基于Struts2、Spring、Hibernate的小程序中,我们将探讨这三大框架如何协同工作,实现数据...

    struts+hibernate分页 模糊查询

    ### Struts 1.2与Hibernate 3...综上所述,通过上述步骤,我们可以成功地在Struts 1.2与Hibernate 3的组合中实现分页和模糊查询功能。这种方式不仅能够提高Web应用的用户体验,还能有效降低开发复杂度,提升开发效率。

    struts+hibernate+spring的分页

    使用Hibernate的Criteria API或HQL(Hibernate Query Language)可以方便地实现分页查询,通过设置`setFirstResult()`和`setMaxResults()`方法来控制每页显示的数据量。 **Spring框架**: Spring框架提供了全面的...

    spring+hibernate+struts实现分页代码

    在Java Web开发中,Spring、Hibernate和Struts是三大核心框架,它们的组合常被称为SSH框架,用于构建高效、可维护的企业级应用。本项目利用这三者来实现分页功能,这是一种常见的需求,特别是在数据量大的情况下,...

    Spring+Hibernate+Struts实现分页

    在分页场景下,Hibernate提供Criteria、HQL(Hibernate查询语言)或SQL查询方式,结合Page对象或者Criteria的setFirstResult和setMaxResults方法实现分页查询。 3. **Struts框架**:Struts负责处理HTTP请求,通过...

    struts+hibernate做的分页

    总结来说,"struts+hibernate做的分页"是通过Struts处理用户请求,调用Hibernate进行分页查询,然后在JSP页面上使用标签库显示结果。这种组合充分利用了两个框架的优势,提供了高效、灵活的分页解决方案。在实际项目...

    struts+hibernate+spring集成实现分页

    在分页时,我们可以利用HQL(Hibernate查询语言)或者Criteria API来编写分页查询,这两个工具能够直接与数据库进行交互,获取指定范围的数据。此外,Hibernate还提供了ScrollableResults接口,支持高效的分页浏览,...

    在struts+hibernate框架下实现动态分页

    在Struts和Hibernate这两个流行的Java Web开发框架的组合中,实现动态分页是一项常见的需求。动态分页允许用户浏览大量的数据,而不会一次性加载所有记录,从而提高用户体验和系统性能。下面将详细介绍如何在Struts...

    数据分页以及高级查询

    高级查询允许用户根据多种条件进行复杂的数据筛选,包括但不限于按字段排序、模糊搜索、范围查询、多条件组合查询等。在Java中,我们可以使用JPA(Java Persistence API)或Hibernate等ORM框架来实现高级查询。例如...

    ext3+struts2+hibernate+spring的CRUD+分页

    总的来说,"ext3+struts2+hibernate+spring的CRUD+分页"组合为Java Web开发者提供了一个高效且功能强大的工具链,能够快速构建出具有数据管理功能的Web应用,同时具备良好的用户体验和可维护性。

    struts + hibernate+sprig 的分页源代码

    在分页查询时,Hibernate可以通过HQL(Hibernate Query Language)或SQL来实现,结合Criteria API,可以方便地获取指定范围的数据,并且支持动态SQL生成,以适应不同的分页需求。 3. **Spring框架**: Spring作为...

    Hibernate的MySql查询.rar

    除了这些基本查询,Hibernate还支持更复杂的操作,如分页查询、排序、联接查询等。例如,如果我们想按用户名降序分页查询用户,可以这样做: ```java Criteria criteria = session.createCriteria(User.class) ....

Global site tag (gtag.js) - Google Analytics