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

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+中文文档

    15.7. 投影(Projections)、聚合(aggregation)和分组(grouping) 15.8. 离线(detached)查询和子查询 15.9. 根据自然标识查询(Queries by natural identifier) 16. Native SQL查询 16.1. 使用SQLQuery 16.1.1....

    hibernate3.2中文文档(chm格式)

    15.7. 投影(Projections)、聚合(aggregation)和分组(grouping) 15.8. 离线(detached)查询和子查询 15.9. 根据自然标识查询(Queries by natural identifier) 16. Native SQL查询 16.1. 使用SQLQuery 16.1.1....

    HibernateAPI中文版.chm

    15.7. 投影(Projections)、聚合(aggregation)和分组(grouping) 15.8. 离线(detached)查询和子查询 15.9. 根据自然标识查询(Queries by natural identifier) 16. Native SQL查询 16.1. 使用SQLQuery 16.1.1....

    Hibernate 中文 html 帮助文档

    15.7. 投影(Projections)、聚合(aggregation)和分组(grouping) 15.8. 离线(detached)查询和子查询 15.9. 根据自然标识查询(Queries by natural identifier) 16. Native SQL查询 16.1. 使用SQLQuery 16.1.1. 标量...

    Hibernate中文详细学习文档

    15.7. 投影(Projections)、聚合(aggregation)和分组(grouping) 15.8. 离线(detached)查询和子查询 15.9. 根据自然标识查询(Queries by natural identifier) 16. Native SQL查询 16.1. 使用SQLQuery 16.1.1....

    最全Hibernate 参考文档

    15.7. 投影(Projections)、聚合(aggregation)和分组(grouping) 15.8. 离线(detached)查询和子查询 16. Native SQL查询 16.1. 创建一个基于SQL的Query 16.2. 别名和属性引用 16.3. 命名SQL查询 16.3.1. 使用...

    hibernate 体系结构与配置 参考文档(html)

    投影(Projections)、聚合(aggregation)和分组(grouping) 15.8. 离线(detached)查询和子查询 15.9. 根据自然标识查询(Queries by natural identifier) 16. Native SQL查询 16.1. 使用SQLQuery 16.2. 别名和...

    Hibernate教程

    16.7. 投影(Projections)、聚合(aggregation)和分组(grouping) 16.8. 离线(detached)查询和子查询 17. Native SQL查询 17.1. 创建一个基于SQL的Query 17.2. 别名和属性引用 17.3. 命名SQL查询 17.3.1. 使用...

    Hibernate_3.2.0_符合Java习惯的关系数据库持久化

    15.7. 投影(Projections)、聚合(aggregation)和分组(grouping) 15.8. 离线(detached)查询和子查询 15.9. 根据自然标识查询(Queries by natural identifier) 16. Native SQL查询 16.1. 使用SQLQuery 16.1.1....

    Hibernate3+中文参考文档

    15.7. 投影(Projections)、聚合(aggregation)和分组(grouping) 15.8. 离线(detached)查询和子查询 16. Native SQL查询 16.1. 创建一个基于SQL的Query 16.2. 别名和属性引用 16.3. 命名SQL查询 16.3.1. 使用...

    hibernate3.04中文文档.chm

    16.7. 投影(Projections)、聚合(aggregation)和分组(grouping) 16.8. 离线(detached)查询和子查询 17. Native SQL查询 17.1. 创建一个基于SQL的Query 17.2. 别名和属性引用 17.3. 命名SQL查询 17.3.1. ...

    hibernate 框架详解

    投影(Projections)、聚合(aggregation)和分组(grouping) 16.8. 离线(detached)查询和子查询 17. Native SQL查询 17.1. 创建一个基于SQL的Query 17.2. 别名和属性引用 17.3. 命名SQL查询 17.3.1. 使用...

    Hibernate参考文档

    15.7. 投影(Projections)、聚合(aggregation)和分组(grouping) 15.8. 离线(detached)查询和子查询 15.9. 根据自然标识查询(Queries by natural identifier) 16. Native SQL查询 16.1. 使用SQLQuery 16.1.1. 标量...

    NHibernate参考文档 2.0.0 chm

    13.7. 投影(Projections)、聚合(aggregation)和分组(grouping) 13.8. 离线(detached)查询和子查询 14. 原生SQL查询 14.1. 使用ISQLQuery 14.1.1. 标量查询(Scalar queries) 14.1.2. 实体查询(Entity queries) ...

    NHibernate中文帮组文档(2008.11月更新)

    13.7. 投影(Projections)、聚合(aggregation)和分组(grouping) 13.8. 离线(detached)查询和子查询 14. 原生SQL查询 14.1. 使用ISQLQuery 14.1.1. 标量查询(Scalar queries) 14.1.2. 实体查询(Entity queries) ...

Global site tag (gtag.js) - Google Analytics