当前位置:首页 > 开发 > 编程语言 > Hibernate > 正文

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

发表于: 2012-05-11   作者:cuisuqiang   来源:转载   浏览次数:
摘要: 前面发了Hibernate的查询 标准(Criteria)查询 分页、单个记录、排序 后有网友回复说道查询数据总数量,我今天补充一下标准查询中的 聚合与分组   记录数查询很简单: Criteria crit = session.createCriteria(User.class); crit.setProjection(Projections.rowCount());

前面发了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

 

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

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
一、简述 Criteria是一种比hql更面向对象的查询方式。Criteria 可使用 Criterion 和 Projection 设
Hibernate的三种查询方式 1.HQL (Hibernate Query Lanuage) 语句,这是类似SQL语句的一种对象化查询
1、概述 如果使用了特定于某个数据库的SQL语句,我们所编写的程序就会依赖于特定的数据库,降低了程
List<SessionMonitor> (SessionMonitorBo bo) { Criteria criteria =createCriteria(SessionM
HQL(Hibernate Query Language) 面向对象的查询语言,与SQL不同,HQL中的对象名是区分大小写的(除
出于对性能的要求,公司希望把Mysql的数据迁移到MongoDB上,于是我开始学习Mongo的一些CRUD操作,由
因为最近测试MongoDB,也算是熟悉了MongoDB吧。MongoDB还算简单,在短短一周我就掌握了很多内容。相
SSRS 系列 - 使用带参数的 MDX 查询实现一个分组聚合功能的报表 SSRS 系列 - 使用带参数的 MDX 查询
有数据表 ts_invite_record ,内容如下: select count(*) as count from ( (SELECT distinct uid F
一,什么是分组函数 分组函数作用于一组数据,并对一组数据返回一个值 二,分组函数类型 Avg ,coun
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号