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();

}

 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值