hql语法002
1、
package cn.jbit.hibernatedemo.test; import java.util.Iterator;
import java.util.List; import org.hibernate.*;
import org.junit.Test; import cn.jbit.hibernatedemo.dao.HibernateUtil;
import cn.jbit.hibernatedemo.entity.DeptSalary; public class Eg { /**
* 统计部门个数。
*/
@Test
public void egDept() {
Session session = null;
try {
// 获取session
session = HibernateUtil.currentSession();
Long count = (Long) session.createQuery(
"select count(*) from Dept d").uniqueResult();
System.out.println(count);
} catch (Exception e) {
e.printStackTrace();
} finally {
// 关闭session
HibernateUtil.closeSession();
}
} /**
* 统计员工工资。
*/
@Test
public void egEmp() {
Session session = null;
try {
// 获取session
session = HibernateUtil.currentSession();
Double salarySum = (Double) session.createQuery(
"select sum(e.salary) from Emp e").uniqueResult();
System.out.println(salarySum);
} catch (Exception e) {
e.printStackTrace();
} finally {
// 关闭session
HibernateUtil.closeSession();
}
} /**
* 统计员工最低工资。
*/
@Test
public void egEmpMinSalary() {
Session session = null;
try {
// 获取session
session = HibernateUtil.currentSession();
Double salary = (Double) session.createQuery(
"select min(e.salary) from Emp e").uniqueResult();
System.out.println(salary);
} catch (Exception e) {
e.printStackTrace();
} finally {
// 关闭session
HibernateUtil.closeSession();
}
} /**
* 统计员工最高工资。
*/
@Test
public void egEmpMaxSalary() {
Session session = null;
try {
// 获取session
session = HibernateUtil.currentSession();
Double salary = (Double) session.createQuery(
"select max(e.salary) from Emp e").uniqueResult();
System.out.println(salary);
} catch (Exception e) {
e.printStackTrace();
} finally {
// 关闭session
HibernateUtil.closeSession();
}
} /**
* 统计员工平均工资。
*/
@Test
public void egEmpAvgSalary() {
Session session = null;
try {
// 获取session
session = HibernateUtil.currentSession();
Double salary = (Double) session.createQuery(
"select avg(e.salary) from Emp e").uniqueResult();
System.out.println(salary);
} catch (Exception e) {
e.printStackTrace();
} finally {
// 关闭session
HibernateUtil.closeSession();
}
} /**
* 统计最低工资、最高工资以及平均工资。
*/
@Test
public void egEmpSalary() {
Session session = null;
try {
// 获取session
session = HibernateUtil.currentSession();
Object[] salarys = (Object[]) session.createQuery(
"select min(salary),max(salary),avg(salary) from Emp")
.uniqueResult();
System.out
.println(salarys[0] + "," + salarys[1] + "," + salarys[2]);
} catch (Exception e) {
e.printStackTrace();
} finally {
// 关闭session
HibernateUtil.closeSession();
}
} /**
* 统计员工职位个数。
*/
@Test
public void egJobEmp() {
Session session = null;
try {
// 获取session
session = HibernateUtil.currentSession();
Object count = session.createQuery(
"select count(distinct job) from Emp ").uniqueResult();
System.out.println(count.getClass().getName());
} catch (Exception e) {
e.printStackTrace();
} finally {
// 关闭session
HibernateUtil.closeSession();
}
} /**
* 按职位统计员工个数。
*/
@Test
public void eg1() {
Session session = null;
try {
// 获取session
session = HibernateUtil.currentSession();
List<Object[]> list = session.createQuery(
"select job,count(e) from Emp e group by job").list();
for (Object[] obj : list)
System.out.println(obj[0] + "," + obj[1]);
} catch (Exception e) {
e.printStackTrace();
} finally {
// 关闭session
HibernateUtil.closeSession();
}
} /**
* 统计各个部门的平均工资
*/
@Test
public void eg2() {
Session session = null;
try {
// 获取session
session = HibernateUtil.currentSession();
Iterator<Object[]> it = session
.createQuery(
"select e.dept.deptName,avg(e.salary) from Emp e group by e.dept.deptName")
.list().iterator();
Object[] obj = null;
while (it.hasNext()) {
obj = it.next();
System.out.println(obj[0] + "," + obj[1]);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
// 关闭session
HibernateUtil.closeSession();
}
} /**
* 统计各个职位的最低工资和最高工资
*/
@Test
public void eg3() {
Session session = null;
try {
// 获取session
session = HibernateUtil.currentSession();
Iterator<Object[]> it = session
.createQuery(
"select job,min(salary),max(salary) from Emp group by job")
.list().iterator();
Object[] obj = null;
while (it.hasNext()) {
obj = it.next();
System.out.println(obj[0] + "," + obj[1] + "," + obj[2]);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
// 关闭session
HibernateUtil.closeSession();
}
} /**
* 统计各个部门平均工资高于4000元的部门名称,打印部门名称、部门平均工资
*/
@Test
public void eg4() {
Session session = null;
try {
// 获取session
session = HibernateUtil.currentSession();
Iterator<Object[]> it = session
.createQuery(
"select e.dept.deptName,avg(e.salary) from Emp "
+ "e group by e.dept.deptName having avg(e.salary)>4000")
.list().iterator();
Object[] obj = null;
while (it.hasNext()) {
obj = it.next();
System.out.println(obj[0] + "," + obj[1]);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
// 关闭session
HibernateUtil.closeSession();
}
} /**
* 统计各个部门平均工资高于4000元的部门名称,打印部门名称、部门平均工资,使用JavaBean封装查询结果
*/
@Test
public void eg4JavaBean() {
Session session = null;
try {
// 获取session
session = HibernateUtil.currentSession();
Iterator<DeptSalary> it = session
.createQuery(
"select new cn.jbit.hibernatedemo.entity.DeptSalary(e.dept.deptName,avg(e.salary))"
+ " from Emp e group by e.dept.deptName having avg(e.salary)>4000")
.list().iterator();
DeptSalary deptSalary = null;
while (it.hasNext()) {
deptSalary = it.next();
System.out.println(deptSalary.getDeptName() + ","
+ deptSalary.getAvgSalary());
}
} catch (Exception e) {
e.printStackTrace();
} finally {
// 关闭session
HibernateUtil.closeSession();
}
} }
hql语法002的更多相关文章
- jpa 联表查询 返回自定义对象 hql语法 原生sql 语法 1.11.9版本
-----业务场景中经常涉及到联查,jpa的hql语法提供了内连接的查询方式(不支持复杂hql,比如left join ,right join). 上代码了 1.我们要联查房屋和房屋用户中间表,通过 ...
- 查询总结、HQL语法、QBC(QueryByCriteria)深入学习
1.查询总结 在之前的批量查询练习的时候练习基本五种查询方法的使用: 1.OID查询---根据对象ID进行查询 2.对象属性导航查询: obj.getXXX 3.HQL查询:Query对象查询 4.Q ...
- Hibernate 框架 -HQL 语法
HQL ( Hibernate Query Language ) 查询语言是面向对象的查询语言,也是在 Hibernate 中最常见的.其语法和 SQL 语法有一些相似,功能十分强大,几乎支持除特殊 ...
- [转]hql 语法与详细解释
HQL查询:Criteria查询对查询条件进行了面向对象封装,符合编程人员的思维方式,不过HQL(Hibernate Query Lanaguage)查询提供了更加丰富的和灵活的查询特性,因此 Hib ...
- HQL语法
HQL:Hibernate Query Language HQL是完全面向对象的查询语言,因此可以支持继承和多态等特征. $下面介绍HQL语句的语法 1.from子句 from Person 表明从P ...
- 一脸懵逼学习Hive的使用以及常用语法(Hive语法即Hql语法)
Hive官网(HQL)语法手册(英文版):https://cwiki.apache.org/confluence/display/Hive/LanguageManual Hive的数据存储 1.Hiv ...
- hql 语法详解
HQL查询:Criteria查询对查询条件进行了面向对象封装,符合编程人员的思维方式,不过HQL(Hibernate Query Lanaguage)查询提供了更加丰富的和灵活的查询特性,因此 Hib ...
- hql 语法与详细解释<转>
HQL查询 HQL查询: Criteria查询对查询条件进行了面向对象封装,符合编程人员的思维方式,不过HQL(Hibernate Query Lanaguage)查询提供了更加丰富的和灵活的查询特性 ...
- 3 hql语法及自定义函数(含array、map讲解) + hive的java api
本博文的主要内容如下: .hive的详细官方手册 .hive支持的数据类型 .Hive Shell .Hive工程所需依赖的jar包 .hive自定义函数 .分桶4 .附PPT hiv ...
随机推荐
- 【Codeforces 762A】 k-th divisor
[题目链接] 点击打开链接 [算法] 我们知道,一个数的因子是成对出现的,一半小于等于sqrt(N),一半大于sqrt(N),因此,我们可以从 2..sqrt(N)枚举因子 [代码] #include ...
- Bug: CCScheduler#scheduleSelector. Selector already scheduled. Updating interval from: 0.0000 to 0.0000
原因是当前的scheduleOnce还没有执行完成, 可以将scheduleOnce方法改写成另外一种形式,把CCDelayTime和CCCallFunc拼接构造延迟事件调用: CCDelayTime ...
- label标签的可访问性
与表单元素关联的方法(IE6下label标签包裹控件的方法是不顶用的): 1 使用for和id关联控件 <p><label for="test">标签< ...
- Windows远程服务器不能复制粘贴
操作步骤: 在服务器上打开任务管理器,查看进程,有 rdpclip.exe 进程,关闭此进程: 然后 开始->运行->rdpclip.exe 重新运行此程序,恢复正常.
- 【WEB基础】HTML & CSS 基础入门(4)列表及其样式
前面 网页中漂亮的导航.整齐规范的文章标题列表和图片列表等等.这些都是离不开HTML里一个重要的元素----列表,在HTML中有无序列表.有序列表和定义列表三种类型.其中,无序列表应用最为广泛,下面, ...
- Androidstudio中添加jar包的方法
在Androidstudio中添加一个jar包进去,怎么添加? 以下纯个人使用Androidstudio过程中的经验积累,要是有不足,望提出建议. 方法一: 先点击Androidstudio中的Pro ...
- POJ3468【线段树lazy操作】
上午理论AC,打到现在快吐了... 一个那么**Lazy操作打成这样,query操作和update操作都有问题,妈蛋,发现是mid<=s+1-真是蠢到家,明明是mid+1<=s卧槽连左和右 ...
- bzoj 3872: [Poi2014]Ant colony【树形dp+二分】
啊我把分子分母混了WA了好几次-- 就是从食蚁兽在的边段成两棵树,然后dp下去可取的蚂蚁数量区间,也就是每次转移是l[e[i].to]=l[u](d[u]-1),r[e[i].to]=(r[u]+1) ...
- bzoj 1879: [Sdoi2009]Bill的挑战【状压dp】
石乐志写容斥--其实状压dp就行 设f[i][s]表示前i个字母,匹配状态为s,预处理g[i][j]为第i个字母是j的1~n的集合,转移的时候枚举26个字母转移,最后答案加上正好有k个的方案即可 #i ...
- 基于 CODING 轻松搞定持续集成
点击观看视频教程 带你一步一步搞定 CODING 持续集成 持续集成加速软件交付 持续集成这个概念是由 Grady Booch 在 1991 年首次提出,随后成为了 DevOps 的核心实践之一.持续 ...