HQL(Hibernate Query Language) 是面向对象的查询语言,它和 SQL 查询语言有些相似。在 Hibernate 提供的各种检索方式中,HQL 是使用最广的一种检索方式,它有如下功能:

  -在查询语句中设定各种查询条件

  -支持投影查询,即检索出对象的部分属性

  -支持分页查询

  -支持连接查询

  -支持分组查询,允许使用 HAVING 和 GROUP BY 关键字

  -提供内置聚集函数,如 sum()、min()、max()

  -支持子查询

  -支持动态绑定参数

  -能够调用用户定义的 SQL 函数或标准的 SQL 函数

HQL 检索方式包括以下步骤:

  -通过 Session 的 createQuery()方法创建一个 Query 对象,它包括一个 HQL 查询语句。HQL 查询语句中可以包含命名参数

  -动态绑定参数

  -调用 Query 相关方法执行查询语句

Query 接口支持方法链编程风格,它的 setXxx()方法返回自身实例,而不是 void 类型

HQL vs SQL:

  -HQL 查询语句是面向对象的,Hibernate 负责解析 HQL 查询语句,然后根据对象-关系映射文件中的映射信息,把 HQL 查询语句翻译成相应的 SQL 查询语句。HQL 查询语句中的主体是域模型中的类及类的属性

  -SQL 查询语句是与关系数据库绑定在一起的,SQL 查询语句中的主体是数据库表及表的字段

绑定参数:

  -Hibernate 的参数绑定机制依赖于 JDBC API 中的  PreparedStatement 的预定义 SQL 语句功能

  -HQL 参数绑定有两种形式:

    --按参数名字绑定:在 HQL 查询语句中定义命名参数,命名参数以“:”开头。

    --按参数位置绑定:在 HQL 查询语句中用“?”来定义参数位置

  -相关方法:

    --setEntity():把参数与一个持久化类绑定

    --setParameter():绑定任意类型的参数。该方法的第三个参数显式指定 Hibernate 映射类型

HQL 采用 ORDER BY 关键字对查询结果排序

        // 1. 创建 Query 对象
String hql = "FROM Employee e WHERE e.id < ?";
Query query = session.createQuery(hql); // 2. 绑定参数
query.setInteger(0, 130); // 3. 执行查询
List<Employee> employees = query.list();
System.out.println(employees.size());

Hibernate 检索方式之 HQL 检索方式的更多相关文章

  1. hibernate检索方式(HQL 检索方式,QBC 检索方式,本地 SQL 检索方式)

    hibernate有五种检索方式,这儿用 单向的一对多的映射关系 例子,这儿有后三种的方式: 导航对象图检索方式: 根据已经加载的对象导航到其他对象 OID 检索方式: 按照对象的 OID 来检索对象 ...

  2. [原创]java WEB学习笔记90:Hibernate学习之路-- -HQL检索方式,分页查询,命名查询语句,投影查询,报表查询

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  3. Hibernate 检索查询的几种方式(HQL,QBC,本地SQL,集成Spring等)

    1.非集成Spring hibernate的检索方式,主要有以下五种. 1.导航对象图检索方式.(根据已经加载的对象,导航到其他对象.) 2.OID检索方式.(按照对象的OID来检索对象.) 3.HQ ...

  4. Hibernate的检索方式--查询数据的方式

    Hibernate 提供了以下几种检索对象的方式1导航对象图检索方式: 根据已经加载的对象导航到其他对象(根据已经加载的对象,导航到其他对象-例如一对多的查询)2OID 检索方式: 按照对象的 OID ...

  5. Hibernate之HQL检索(查询)方式

    HQL(Hibernate Query Language)是面向对象的查询语言,与SQL非常相似.在Hibernate中,HQL是使用最广泛的检索方式. 具有下面经常使用功能: (1)在查询语句中,能 ...

  6. hibernate提供的5种检索数据方式

    一.五种检索数据方式 1.OID检索,即使用session.get或session.load通过类及指定id查询数据,如Customer c=(Customer)session.get("C ...

  7. [Hibernate] One-To-Many 配置文件和注解的方式以及HQL语句

    一对多需要在一的类配置多的类的set泛型集合. 多的一端需要添加一的类作为属性,其和数据库对应的是对应表的主键. 一个购物车有多个商品,购物车有个cart_id作为主键,商品除了自己的items_id ...

  8. [原创]java WEB学习笔记92:Hibernate学习之路-- -QBC 检索和本地 SQL 检索:基本的QBC 查询,带 AND 和 OR 的QBC,统计查询,排序,分页

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  9. Hibernate 查询方式、JPA查询方式

    hibernate 查询方式: OID 查询 对象导航查询 HQL 方式查询 QBC方式查询 原生SQL方式查询 JPA 查询方式: OID 查询 对象导航查询 JPQL 方式查询 CriteriaB ...

随机推荐

  1. HttpClient基本使用

    1.在pom.xml加入对httpclient的必需的jar包的依赖 <!--//httpclient的接口基本都在这儿--> <dependency> <groupId ...

  2. L1-Day11

    1.问问他能不能来.[我的翻译]Ask him wether he can come.[标准答案]Ask him whether/if he can come.[对比分析]天呐 whether都能拼写 ...

  3. Shell中字符串的切割、拼接、比较、替换

    [截取] 一.Linux shell 截取字符变量的前8位,有方法如下: expr substr “$a” 1 8 : 二.按指定的字符串截取 第一种方法: ${varible##*string} # ...

  4. 爬虫 解析库re,Beautifulsoup,

    re模块 点我回顾 Beautifulsoup模块 #安装 Beautiful Soup pip install beautifulsoup4 #安装解析器 Beautiful Soup支持Pytho ...

  5. Gitlab_ansible_jenkins三剑客②Gitlab的后台管理

    系统信息和日志 健康状态 使用gitlab的用户管理和审批功能 创建用户 创建一个lead普通账号 进入test-repo仓库 这样就把dev添加到了test-repo这个项目中,并且有了develo ...

  6. Linux中Too many open files

    1.ulimit –a open files一项就是默认的句柄数,最大为 65536 2.修改最大open files /etc/security/limits.conf文件中,加入以下配置: * s ...

  7. tcp与ip协议的区别

    TCP/IP(TransmissionControlProtocol/InternetProtocol的简写,中文译名为传输控制协议/互联网络协议). 简单地说,就是由底层的IP协议和TCP协议组成的 ...

  8. Python turtle模块小黄人程序

    讲解Python初级课程的turtle模块,简单粗暴的编写了小黄人的程序.程序还需要进一步优化.难点就是要搞清楚turtle在绘制图形过程中的方向变化. import turtle t = turtl ...

  9. 【JS】Javascript数组操作

    1.提取数组中每个对象的某个属性组成新的数组 如数组为: let arry = [ { name: 'zhao', 'age': 18 }, { name: 'qian', 'age': 19 }, ...

  10. linux常用命令及使用技巧(二)

    ls显示指定工作目录下的内容,同windows中的dir命令 pwd命令显示当前工作目录 date命令,显示或修改系统时间与日期 passwd命令,设置用户密码 su命令改变用户身份 clear命令, ...