1、

import java.util.List;

import org.hibernate.*;
import org.junit.Test; import cn.jbit.hibernatedemo.dao.HibernateUtil;
import cn.jbit.hibernatedemo.entity.Dept;
import cn.jbit.hibernatedemo.entity.Emp; public class Eg { /**
* 查询工资高于平均工资的员工。
*/
@Test
public void egEmp() {
Session session = null;
try {
// 获取session
session = HibernateUtil.currentSession();
List<Emp> list = session.createQuery(
"from Emp e where e.salary>(select avg(salary) from Emp)")
.list();
for (Emp emp : list) {
System.out.println(emp.getEmpName() + "," + emp.getSalary());
}
} catch (Exception e) {
e.printStackTrace();
} finally {
// 关闭session
HibernateUtil.closeSession();
}
} /**
* 查询所有员工工资都小于5000的部门。
*/
@Test
public void eg5() {
Session session = null;
try {
// 获取session
session = HibernateUtil.currentSession();
List<Dept> list = session
.createQuery(
"from Dept d where 5000>all(select e.salary from d.emps e) and d.emps.size>0")
.list();
for (Dept dept : list) {
System.out.println(dept.getDeptName());
}
} catch (Exception e) {
e.printStackTrace();
} finally {
// 关闭session
if (session != null)
session.close();
}
} /**
* 查询至少有一位员工工资低于5000的部门。
*/
@Test
public void eg6() {
Session session = null;
try {
// 获取session
session = HibernateUtil.currentSession();
List<Dept> list = session
.createQuery(
"from Dept d where 5000>any(select e.salary from d.emps e)")
.list();
for (Dept dept : list) {
System.out.println(dept.getDeptName());
}
} catch (Exception e) {
e.printStackTrace();
} finally {
// 关闭session
if (session != null)
session.close();
}
} /**
* ,查询员工工资正好是5000元的部门
*/
@Test
public void eg7() {
Session session = null;
try {
// 获取session
session = HibernateUtil.currentSession();
List<Dept> list = session
.createQuery(
"from Dept d where 5000=any(select e.salary from d.emps e)")
.list();
for (Dept dept : list) {
System.out.println(dept.getDeptName());
}
} catch (Exception e) {
e.printStackTrace();
} finally {
// 关闭session
if (session != null)
session.close();
}
} /**
* 查询员工工资正好是5000元的部门
*/
@Test
public void eg7_1() {
Session session = null;
try {
// 获取session
session = HibernateUtil.currentSession();
List<Dept> list = session
.createQuery(
"from Dept d where 5000=some(select e.salary from d.emps e)")
.list();
for (Dept dept : list) {
System.out.println(dept.getDeptName());
}
} catch (Exception e) {
e.printStackTrace();
} finally {
// 关闭session
if (session != null)
session.close();
}
} /**
* 查询员工工资正好是5000元的部门
*/
@Test
public void eg7_2() {
Session session = null;
try {
// 获取session
session = HibernateUtil.currentSession();
List<Dept> list = session
.createQuery(
"from Dept d where 5000 in (select e.salary from d.emps e)")
.list();
for (Dept dept : list) {
System.out.println(dept.getDeptName());
}
} catch (Exception e) {
e.printStackTrace();
} finally {
// 关闭session
HibernateUtil.closeSession();
}
} /**
* 查询至少有一位员工的部门
*/
@Test
public void eg8() {
Session session = null;
try {
// 获取session
session = HibernateUtil.currentSession();
List<Dept> list = session.createQuery(
"from Dept d where exists (from d.emps)").list();
for (Dept dept : list) {
System.out.println(dept.getDeptName());
}
} catch (Exception e) {
e.printStackTrace();
} finally {
// 关闭session
HibernateUtil.closeSession();
}
} /**
* 查询指定员工所在部门
*/
@Test
public void eg9() {
Session session = null;
try {
// 获取session
session = HibernateUtil.currentSession();
Emp emp = new Emp();
emp.setEmpNo(1);
List<Dept> list = session
.createQuery("from Dept d where ? in elements (d.emps)")
.setParameter(0, emp).list();
for (Dept dept : list) {
System.out.println(dept.getDeptName());
}
} catch (Exception e) {
e.printStackTrace();
} finally {
// 关闭session
HibernateUtil.closeSession();
}
} /**
* 查询指定员工所在部门
*/
@Test
public void eg9_1() {
Session session = null;
try {
// 获取session
session = HibernateUtil.currentSession();
Emp emp = new Emp();
emp.setEmpNo(1);
List<Dept> list = session
.createQuery("from Dept d where ? in (from d.emps)")
.setParameter(0, emp).list();
for (Dept dept : list) {
System.out.println(dept.getDeptName());
}
} catch (Exception e) {
e.printStackTrace();
} finally {
// 关闭session
HibernateUtil.closeSession();
}
} /**
* 查询员工个数大于5的部门
*/
@Test
public void eg10() {
Session session = null;
try {
// 获取session
session = HibernateUtil.currentSession();
List<Dept> list = session.createQuery(
"from Dept d where d.emps.size>5").list();
for (Dept dept : list) {
System.out.println(dept.getDeptName());
}
} catch (Exception e) {
e.printStackTrace();
} finally {
// 关闭session
HibernateUtil.closeSession();
}
} /**
* 查询员工个数大于5的部门
*/
@Test
public void eg10_1() {
Session session = null;
try {
// 获取session
session = HibernateUtil.currentSession();
List<Dept> list = session.createQuery(
"from Dept d where size(d.emps)>5").list();
for (Dept dept : list) {
System.out.println(dept.getDeptName());
}
} catch (Exception e) {
e.printStackTrace();
} finally {
// 关闭session
HibernateUtil.closeSession();
}
}
}

hql语法001的更多相关文章

  1. jpa 联表查询 返回自定义对象 hql语法 原生sql 语法 1.11.9版本

    -----业务场景中经常涉及到联查,jpa的hql语法提供了内连接的查询方式(不支持复杂hql,比如left join ,right join).  上代码了 1.我们要联查房屋和房屋用户中间表,通过 ...

  2. 查询总结、HQL语法、QBC(QueryByCriteria)深入学习

    1.查询总结 在之前的批量查询练习的时候练习基本五种查询方法的使用: 1.OID查询---根据对象ID进行查询 2.对象属性导航查询: obj.getXXX 3.HQL查询:Query对象查询 4.Q ...

  3. Hibernate 框架 -HQL 语法

    HQL ( Hibernate Query Language ) 查询语言是面向对象的查询语言,也是在 Hibernate 中最常见的.其语法和 SQL 语法有一些相似,功能十分强大,几乎支持除特殊 ...

  4. 一脸懵逼学习Hive的使用以及常用语法(Hive语法即Hql语法)

    Hive官网(HQL)语法手册(英文版):https://cwiki.apache.org/confluence/display/Hive/LanguageManual Hive的数据存储 1.Hiv ...

  5. [转]hql 语法与详细解释

    HQL查询:Criteria查询对查询条件进行了面向对象封装,符合编程人员的思维方式,不过HQL(Hibernate Query Lanaguage)查询提供了更加丰富的和灵活的查询特性,因此 Hib ...

  6. HQL语法

    HQL:Hibernate Query Language HQL是完全面向对象的查询语言,因此可以支持继承和多态等特征. $下面介绍HQL语句的语法 1.from子句 from Person 表明从P ...

  7. hql 语法详解

    HQL查询:Criteria查询对查询条件进行了面向对象封装,符合编程人员的思维方式,不过HQL(Hibernate Query Lanaguage)查询提供了更加丰富的和灵活的查询特性,因此 Hib ...

  8. hql 语法与详细解释<转>

    HQL查询 HQL查询: Criteria查询对查询条件进行了面向对象封装,符合编程人员的思维方式,不过HQL(Hibernate Query Lanaguage)查询提供了更加丰富的和灵活的查询特性 ...

  9. 3 hql语法及自定义函数(含array、map讲解) + hive的java api

    本博文的主要内容如下: .hive的详细官方手册    .hive支持的数据类型   .Hive Shell .Hive工程所需依赖的jar包  .hive自定义函数 .分桶4   .附PPT hiv ...

随机推荐

  1. Windows下如何生成数字证书

    1.Makecert.exe<证书创建工具>使用说明:http://msdn.microsoft.com/zh-cn/library/bfsktky3.aspx 2.SignTool.ex ...

  2. 什么是位、字节、字、KB、MB?

    1. 位(bit)是计算机里最小的数据单位,每一位的状态只能是0或者1 2. 字节(Byte)      1Byte = 8 bit      它是存储空间的基本计量单位,1byte可以存储一个英文字 ...

  3. VMware ESXI虚拟机挂载移动硬盘

    Windows server2008 R2 1.“编辑虚拟机设置”,点击“添加” 2.点击添加“USB控制器”: 3.添加完“USB控制器”以后,再点击添加“USB设备”: 完成即可:如果系统里面不显 ...

  4. E20180424-hm

    thumb n. 拇指; (手套的) 拇指部份; trigger  vt. 引发,触发; 扣…的扳机; 发射或使爆炸(武器或爆炸性弹药);      n. (枪) 扳机; 起动装置,扳柄; 引发其他事 ...

  5. 机器学习--DIY笔记与感悟--①K-临近算法(2)

    上一篇博客我手动写了KNN算法,并且之后用手写的算法预测了约会的成功率. 而今天,我在大神博客的指导下调用sklearn这个库来预测图片的内容. 一.前期准备 由于我这里使用的是mac版本,而skle ...

  6. bzoj 3704: 昊昊的机油之GRST【贪心+脑洞】

    脑洞题大概 首先处理出每个位置需要操作的次数c,假设第一次达到目标就不能再走,这样的操作次数是c差分后值的正数和,就想成分治每一段然后同减最小值然后从0处断开 然后考虑能一圈一圈走的情况,连续一段多走 ...

  7. Codeforces 1000 (A~E)

    A Codehorses T-shirts 相同长度之间互相转化即可 #include<iostream> #include<cstdio> #include<cstri ...

  8. 开发者神器!Windows上最强大的虚拟桌面工具-Dexpot

    简介 : 用过Linux和Mac计算机的人都知道 , 这两个系统上都有个多桌面的功能非常使用 . 而在Windows上并没有该项功能 , 虽然目前Win10已经增加了多桌面的程序 , 但使用上仍体验不 ...

  9. MVC 感触

    这几天接触了下 ef+ MVC+WEBAPI +bootstrop VIEW--->Controller  -->WebAPI  ---Model (Linq) 记住 VIEW里的 csh ...

  10. 使用Git分布式版本控制系统

    GIT(分布式版本控制系统) Git是一款免费.开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目.   Git是一个开源的分布式版本控制系统,可以有效.高速的处理从很小到非常大的项目版本 ...