博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Hibernate 分组查询 子查询 原生SQL
阅读量:6608 次
发布时间:2019-06-24

本文共 1721 字,大约阅读时间需要 5 分钟。

分组查询:

 

使用group by关键字对数据分组,使用having关键字对分组数据设定约束条件,从而完成对数据分组和统计

1.1 聚合函数:常被用来实现数据统计功能

① count() 统计记录条数

② sum() 求和

③ min() 求最小值

④ max() 求最大值

⑤ avg() 求平均值

使用分组查询  查询员工编号的平均值

Session session;    Transaction tx;            @Before    public void initDate(){        session = HibernateUtil.getSession();         tx= session.beginTransaction();    }            @After     public void afterTest(){         tx.commit();         HibernateUtil.closeSession();     }
@Test        public void avgEmpno(){                      Emp emp=new Emp();           Object obj=  session.createQuery("select avg(empNo)from Emp").uniqueResult();           System.out.println(obj);                  }

运行结果

经验:当select语句只是选择查询持久化类的部分属性时,Hibernate返回的查询结果为关系数据,而不是持久化对象,不会占用Session缓存。只要应用程序没有变量引用这些数据,它们占用的内存就会被Java虚拟机(JVM)的垃圾回收器回收。为了方便访问,可以定义一个JavaBean来包装查询结果中的关系数据,使应用程序依旧可以按照面向对象的方式来访问查询结果。

 

子查询:

检索薪资小于5000的员工的部门名称

@Test      public void testChild(){                          List
list = session.createQuery("from Dept d where 5000>all(select e.empNo from d.emps e)").list(); for (Dept dept : list) { System.out.println(dept.getDeptName()); } }

 

 原生sql

 在部门的小配置 Dept.hbm.xml中插入<sql-query>节点

select * from Y2162Dept where deptname=:deptname

测试类中添加如下代码

@Test      public void getDeptInfo(){                    Query query =session.getNamedQuery("getDeptByName");                    query.setParameter("deptname", "开发部");          List
list=query.list(); for (Object[] dept : list) { System.out.println(dept[1].getClass()); } }

 

转载于:https://www.cnblogs.com/Smile-123/p/5861838.html

你可能感兴趣的文章
STL杂记
查看>>
LeetCode OJ:Merge Two Sorted Lists(合并两个链表)
查看>>
功能测试
查看>>
Rust的闭包
查看>>
【BZOJ 1901】Dynamic Rankings
查看>>
阿里架构师都在学的知识体系
查看>>
PAT (Advanced Level) 1028. List Sorting (25)
查看>>
【摘】人生苦短, 每日python
查看>>
【转】聚集索引和非聚集索引的区别
查看>>
【转】mac os 安装php
查看>>
Android -- OkHttp的简单使用和封装
查看>>
软件工程_第二次作业
查看>>
C# DllImport的用法
查看>>
Github-Client(ANDROID)开源之旅(二) ------ 浅析ActionBarSherkLock
查看>>
no identities are available for signing
查看>>
javascript 和 jquery插件开发
查看>>
Linux Shell文件差集
查看>>
eclipse中如何去除警告:Class is a raw type. References to generic type Class<T> should be parameterized...
查看>>
Gradle脚本基础全攻略
查看>>
Django模版中的过滤器详细解析 Django filter大全
查看>>