`
cuisuqiang
  • 浏览: 3954235 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
3feb66c0-2fb6-35ff-968a-5f5ec10ada43
Java研发技术指南
浏览量:3665210
社区版块
存档分类
最新评论

Hibernate的查询 标准(Criteria)查询 聚合和分组

    博客分类:
  • SSH
阅读更多

前面发了Hibernate的查询 标准(Criteria)查询 分页、单个记录、排序 后有网友回复说道查询数据总数量,我今天补充一下标准查询中的 聚合与分组

 

记录数查询很简单:

Criteria crit = session.createCriteria(User.class);
crit.setProjection(Projections.rowCount());
int v = (Integer)crit.uniqueResult();

 

但是要注意,setProjection方法只是最后一次有效。就是说你可以多次使用这个方法,但是后一次操作将覆盖前一次的聚合操作。

Criteria crit = session.createCriteria(User.class);
crit.setProjection(Projections.rowCount());
int value = (Integer)crit.uniqueResult();
System.out.println(value);
crit.setProjection(Projections.max("id"));
value = (Integer)crit.uniqueResult();
System.out.println(value);	
crit.setProjection(Projections.sum("id"));
value = (Integer)crit.uniqueResult();
System.out.println(value);	

 

以上就会执行三次查询操作,分别执行的SQL为:

select count(*) from user
select max(id) from user
select sum(id) from user

 

 

如果要设置多个聚合操作,请查看如下示例:

ProjectionList proList = Projections.projectionList();
proList.add(Projections.rowCount());
proList.add(Projections.max("id"));
proList.add(Projections.sum("id"));
crit.setProjection(proList);
List results = crit.list();
Object[] arr = (Object[])results.get(0);
for(Object ob : arr){
	System.out.println(ob.toString());	
}

 

上面执行一条SQL:

select count(*),max(id),sum(id) from user

 

如果你看Projections这个类的话也也有看到分组的方法:

Criteria crit = session.createCriteria(User.class);
crit.setProjection(Projections.rowCount());
crit.setProjection(Projections.groupProperty("name"));
List results = crit.list();
Object[] arr = null;
for(int i=0;i<results.size();i++){
	arr = (Object[])results.get(i);
	for(Object ob : arr){
		System.out.print(ob.toString());
	}
	System.out.println();
}

 

以上会执行SQL:

select count(*) from user group by name

 

当然还有求平均,你可以自己尝试!

 

请您到ITEYE看我的原创:http://cuisuqiang.iteye.com

或支持我的个人博客,地址:http://www.javacui.com

 

分享到:
评论
2 楼 cuisuqiang 2012-05-14  
gs053485 写道
不错,很是详细的资料

博客里还有其他的,你可以看看
1 楼 gs053485 2012-05-14  
不错,很是详细的资料

相关推荐

    hibernate criteria 分组 排序 关联

    ### Hibernate Criteria 分组、排序与关联查询详解 #### 标题与描述理解 - **标题**:“hibernate criteria 分组 排序 关联”这一标题明确了本文将围绕Hibernate Criteria API进行分组、排序以及关联查询的具体...

    Hibernate中Criteria的完整用法

    理解并熟练运用Hibernate的Criteria API,可以帮助开发者更有效地构建动态和复杂的查询,同时保持代码的整洁和可读性。在实际项目中,可以根据需求选择使用HQL(Hibernate Query Language)或Criteria API,两者各有...

    Hibernate_query聚合函数查询.

    在实际应用中,你还可以结合Hibernate的 Criteria 查询、Criteria API 或者 JPA 的 Query API 来实现更复杂的聚合查询,如带条件的聚合、子查询等。 总之,Hibernate提供的聚合函数使得在Java应用程序中进行数据...

    Hibernate的Criteria用法总结

    4. **分组和聚合**: ```java criteria.setProjection(Projections.groupProperty("country")); criteria.setProjection(Projections.count("id")); ``` 5. **执行查询并获取结果**: ```java List&lt;User&gt; ...

    Criteria hibernate

    Criteria API也支持分组和聚合操作。通过调用setGroupBy()方法进行分组,使用Projections类的聚合函数,如count(), max(), min()等。 6. **关联查询(Joins)** Hibernate Criteria API允许进行关联查询,包括内...

    Hibernate中,利用Criteria查询容器实现sql的写法

    总结来说,Hibernate的Criteria API为Java开发人员提供了一种强大的、灵活的查询机制,使得我们可以以面向对象的方式来构建和执行SQL查询,极大地提升了代码的可读性和可维护性。结合源码理解和版本控制工具,可以...

    Hibernate中的Criteria的认识

    通过上述介绍,我们可以看到,Hibernate的Criteria API提供了一个强大且灵活的数据查询解决方案,它不仅支持基本的查询需求,还能处理复杂的查询场景,如排序、分页、聚合函数、分组统计以及条件过滤等。这使得开发...

    Hibernate_Criteria条件查询数据

    Criteria查询是Hibernate提供的API,与传统的HQL(Hibernate Query Language)查询相比,它更具有动态性和灵活性。Criteria查询允许你在运行时构建查询,这在处理动态或复杂的查询需求时尤其有用。下面我们将深入...

    通用的hibernate查询

    在Hibernate中,查询数据主要通过Criteria、HQL(Hibernate Query Language)和Query API三种方式。首先,让我们来看看Criteria查询。Criteria API提供了一种类型安全的方式,通过构建查询条件来执行数据库查询。...

    Hibernate的Criteria文档

    在Java的持久层框架Hibernate中,Criteria API是一个强大的查询工具,它可以用来替代传统的SQL或HQL(Hibernate Query Language)查询,以实现更加面向对象的数据库交互。Criteria API的设计旨在屏蔽不同数据库之间...

    Hibernate的HQL与Criteria资料

    本资料主要探讨的是Hibernate中的两种查询方式:HQL(Hibernate Query Language)和Criteria API。 HQL,全称为Hibernate查询语言,是Hibernate提供的一种面向对象的查询语言,类似于SQL,但更加面向对象。HQL直接...

    Hibernate中Criteria的用法详解

    在Java的持久化框架Hibernate中,Criteria API是一个强大的查询工具,它可以用来构建动态和复杂的查询。Criteria API的主要优点在于它的灵活性,允许开发者在运行时构建查询,而不必预先定义HQL(Hibernate Query ...

    Hibernate中Criteria的使用

    4. **分组(Projections)**:定义查询结果的返回字段,可以是单个属性、计算字段或者聚合函数。例如,统计不同城市的用户数量: ```java criteria.setProjection(Projections.groupProperty("city")); criteria....

    Hibernate查询方式代码示例

    本教程将深入探讨Hibernate 3.x版本中的查询方式,包括基本查询、HQL(Hibernate Query Language)以及Criteria API,帮助开发者更高效地处理数据库交互。 1. **基本查询(Criteria API)** Hibernate Criteria ...

    Hibernate Criteria用法大全.docx

    总的来说,Hibernate Criteria API 提供了强大的查询功能,允许开发者以面向对象的方式构建复杂查询,同时保持代码的清晰和简洁。结合其分页、排序、预测、聚合等功能,可以灵活应对各种数据库查询需求。在实际开发...

    Hibernate Criteria 完全使用

    Criteria API 可以添加分组和聚合函数,如 `Projections.groupProperty("propertyName")` 和 `Projections.sum("property")`。 ```java criteria.setProjection(Projections.projectionList() .add(Projections....

Global site tag (gtag.js) - Google Analytics