jpa--17.JPQL的order和group

参看易百教程:https://www.yiibai.com/jpa/jpa_jpql.html

 

1      order by子句

1.1  语法

order by子句用于对查询结果集进行排序。和SQL的用法类似,可以用“asc“和 "desc“指定升降序。如果不显式注明,默认为升序。

 

1.2  测试代码

@Test
   public void testOrderBy(){
      Stringjpql= "FROM Customer c WHERE c.age > ?ORDER BY c.age DESC";
      Queryquery= entityManager.createQuery(jpql).setHint(QueryHints.HINT_CACHEABLE,true);
     
      //占位符的索引是从 1 开始
      query.setParameter(1, 4);
      List<Customer>customers= query.getResultList();
      for (Customer customer : customers) {
         System.out.println(customer);
      }
   }


2      group by子句

2.1  group by子句

group by 子句用于对查询结果分组统计,通常需要使用聚合函数。常用的聚合函数主要有AVG、SUM、COUNT、MAX、MIN 等,它们的含义与SQL相同。例如:select max(o.id) from Orders o

没有 group by 子句的查询是基于整个实体类的,使用聚合函数将返回单个结果值,可以使用Query.getSingleResult()得到查询结果。例如:

 

2.2  having子句

Having 子句用于对 groupby 分组设置约束条件,用法与where 子句基本相同,不同是 where 子句作用于基表或视图,以便从中选择满足条件的记录;having 子句则作用于分组,用于选择满足条件的组,其条件表达式中通常会使用聚合函数。

例如,以下语句用于查询订购总数大于100的商家所售商品及数量:

select o.seller,o.goodId, sum(o.amount) from V_Orders o group by o.seller, o.goodId havingsum(o.amount) > 100

having子句与where子句一样都可以使用参数。

        

2.3  测试代码

//查询 order 数量大于 2 的那些 Customer
   @Test
   public void testGroupBy(){
      Stringjpql= "SELECT o.customer FROM Order o "
            +"GROUP BY o.customer "
            +"HAVING count(o.id) >= 2";
      List<Customer>customers= entityManager.createQuery(jpql).getResultList();
 
      System.out.println(customers);
   }



 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值