HQL查询(1)
来源:互联网 发布:vm ubuntu 共享文件夹 编辑:程序博客网 时间:2024/05/25 21:37
4.6 Hibernate 查询体系
Hibernate 提供了异常强大的查询体系,有多种查询方式可以供我们使用。如Hibernate 的 HQL 查询或者使用条件查询,甚至可以使用原生的 SQL 查询语句等。另外还提供了一种数据过滤功能,这些都用于筛选目标数据。
下面分别介绍 Hibernate 的四种数据筛选方法
4.6.1 HQL 查询(1)
HQL 是 HibernateQuery Language 的缩写, HQL 的语法很像 SQL 的语法,但 HQL是一种面向对象的查询语言。因此, SQL 的操作对象是数据表和列等数据对象:而HQL的操作对象是类、实例和属性等。
HQL 是完全面向对象的查询语言,因此可以支持继承和多态等特征。
HQL 查询依赖于 Query 类,每个 Query 实例对应一个查询对象,使用 HQL 查询按如下步骤进行:
(1)获取 Hibernate Session对象:
(2) 编写 HQL 语句:
(3)以 HQL 语句作为参数,调用 Session 的 createQuery方法创建查询对象:
(4) 如果 HQL 语句包含参数,调用 Query 的 setXxx 方法为参数赋值:
(5) 调用 Query 对象的 list 等方法遍历查询结果。
看下面的查询示例:
public class HqlQuery |
通过上面的示例程序,可看出其查询步骤基本相似,但Query对象可以连续多次设置参数,这得益于HibernateQuery的设计。
通常的 seαxx 方法返回值都是void,ill HibernateQuery 的 setXxx 方法返回值是Query 本身。因此,程序通过 Session 创建 Query 后,多次直接调用 setXxx 方法为 HQL语句的参数赋值,再直接调用 list 方法返回查询到的全部结果。
Query 还包含两个方法。
setFirstResult(intfirstResult): 设置返回的结果集从第几条记录开始。
setMaxResults(int maxResults): 设置本次查询返回的结果数。
这两个方法用于实现Hibernate分页。
下面简单介绍 HQL 语句的语法。
HQL 语句本身不区分大小写,也就是说: HQL 语句的关键宇及函数都不区分大小写。但 HQL语句中所使用的包名、类名、实例名及属性名都区分大小写。
1.from 子句
from 是最简单也是最基本的HQL语旬, from关键字后紧跟持久化类的类名。例如:
form Person |
表明从Person持久化类中选出全部的实例。
大部分时候,推荐为该Person的每个实例另起别名。例如:
from Person as p |
2. select子句
select字句用于确定选择出的属性,当然select选择的属性必须是from后持久化类包含的属性,例如:
select p.name from Person as p |
select p.name.firstName from Person as p |
select new list(p.name, p.address) from Person as p |
select new ClassTest(p.name , p.address) from Person as p |
ClassTest(String sl, String s2) |
select p.name as personName from Person as p |
select new map(p.name as personName) from Person as p |
- HQL查询(1)
- HQL查询(1)
- Hibernate查询(1)--HQL
- 随笔1--HQL 事件查询
- hibernate--HQL查询语句(1)
- Hibernate HQL查询(1)
- 4.Hibernate HQL查询1
- HQL查询
- HQL查询
- hql查询
- HQL查询
- hql 查询
- HQL查询
- HQL查询
- hql 查询
- hql查询
- HQL查询
- HQL查询
- String 和 StringBuffer
- 如何在属性对话框标题栏加图标和最小化按钮?
- C# 错误之 Error: 找不到可安装的 ISAM。
- 学习vb.net的好网站
- 程序员如何掌握计算机英语
- HQL查询(1)
- 百度贴吧的近义词
- Ajax不运行解决一例:动态页的客户端网页缓存
- HQL查询(2)
- HQL查询(3)
- HQL查询(4)
- QTP使用心得1——新的开始
- 复杂事件处理(Complex Events Processing) --2. 复杂事件处理的功能和应用场景
- 『套图』跪下来,叫一声娘亲