hibernate的Projections用法

在我们的实际项目开发当中,查询统计的功能是必不可少的,按传统的写SQL语言的方式去做查询统计在这方面显得非常麻烦,特别是查询条件多、连接的表多时,搞得自己昏头转向,最后可能还没成功,但我们如果用Hibernate里的Projections就会显得特别容易,而且层次感,条理性非常清析!

 

例如:有一产品表Product(pid,pname,typeid,num)与产品类型表Type(typeid,typename)。

影射的类为:Product.java(pid,pname,typeid,num)、Type.java(typeid,typename)

如果要统计出产品的数与产品的数量总和:

Criteria cri = session.createCriteria(Product.class)

List list = cri.setProjection(Projections.projectionList().add(Projections.rowCount()).add(Projections.sum("num"))).list();

for(int i=0;i<list.size();i++){

  Object obj[] = (Object[])list.get(i);

  for(Object o:obj){

   System.out.println(o);

 }

}

如果要统计每一类产品的总数:

Criteria cri = session.createCriteria(Product.class);

cri.createAlias("type", "type");

List list = cri.setProjection(Projections.projectionList().add(Projections.rowCount()).add(Projections.sum("num")).add(Projections.groupProperty("type.typeid"))).list();

for(int i=0;i<list.size();i++){

Object obj[] = (Object[])list.get(i);

for(Object o:obj){

System.out.print(o + ":");

}

System.out.println();

}

 

©️2020 CSDN 皮肤主题: 大白 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值