JAVA Hibernate HQL查询、详解

您所在的位置:网站首页 hql查询语句用法详解 JAVA Hibernate HQL查询、详解

JAVA Hibernate HQL查询、详解

2023-09-06 14:47| 来源: 网络整理| 查看: 265

本文转载自:http://hi.baidu.com/ceoct/blog/item/7dbf2210504501cba6ef3f78.html

   Hibernate Query Language(HQL)提供了十分强大的功能,推荐大家使用这种查询方式。HQL具有与SQL语言类似的语法规范,只不过SQL针对表中字段进行查询,而HQL针对持久化对象,它用来取得对象,而不进行update、delete和insert等操作。而且HQL是完全面向对象的,具备继承、多态和关联等特性。

1.from子句

from字句是最简单的HQL语句,例如 from Student,也可以写成select s from Student s。它简单地返回Student类的所有实例。

除了Java类和属性的名称外,HQL语句对大小写并不敏感,所以在上一句HQL语句中,from与FROM是相同的,但是Student 与student就不同了,所以上述语句写成from student就会报错。下列程序演示如何通过执行from语句取得所有的Student对象。

Query query = session.createQuery(“from Student”); List list = query.list(); for (int i=0;i String name = (String)list.get(i); System.out.println(ame()); }

如果要查询两个以上的属性,查询结果会以数组的方式返回,如下所示:

Query query = session.createQuery(“select s.name, s.sex from Student as s”); List list = query.list(); for (int i=0;i Student stu = (Student)list.get(i); System.out.println(stu.getName()); }

要正确运行以上程序,还需要在Student类中加入一个如下的构造函数:

public Student(String name, String sex) { this.name = name; this.sex = sex; }

3.统计函数查询

可以在HQL中使用函数,经常使用的函数有:

count():统计记录条数 min():求最小值 max():求最大值 sum():求和 age():求平均值

例如,要取得Student实例的数量,可以编写如下HQL语句:

select count(*) from Student

取得Student的平均年龄的HQL语句如下:

select avg(s.age) from Student as s

可以使用distinct去除重复数据:

select distinct s.age from Student as s

4.where子句

HQL也支持子查询,它通过where子句实现这一机制。where子句让用户缩小要返回的实例的列表范围,例如下面语句会返回所有名字为“Bill”的Student实例:

Query query = session.createQuery("from Student as s where s.name='Bill' ");

where子句允许出现的表达式包括了SQL中可以使用的大多数情况: 数学操作:+,-,*,/ 真假比较操作:=,>=,



【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3