【Hibernate】Re01.6 HQL
一、支持的查询方式
Hibernate的查询支持三种方式:
1、HQL查询
2、Criteria查询
3、NativeSQL 原生SQL查询
二、HQL查询语言
全称 Hibernate Query Language,是一种面向对象的查询语言
不存在表,字段的概念,只有类和属性的概念,并且Criteria查询也是基于HQL实现的
三、HQL基础语法
[SELECT 别名.属性名] FROM 类名 [AS 别名] [WHERE 查询条件]
如果查询全部可以不需要前面的SELECT语句:
FROM 类名
WHERE条件一般使用指定具体的字段和匹配的值
WHERE 类的别名.属性名 = 值
详细的条件参考地址:
http://blog.sina.com.cn/s/blog_6927adc10100tikv.html
基本的算术运算:
+、-、*、/、
且或非
AND | OR | NOT
或者非空判断:
1、WHERE 别名.属性名 IS NULL 2、WHERE 别名.属性名 IS NOT NULL
非空字符串判断:
1、WHERE 别名.属性名 IS EMPTY 2、WHERE 别名.属性名 IS NOT EMPTY
Member Of ?
MEMBER OF
&
NOT MEMBER OF
Hibernate还提供了相关的表达式,可以处理更为复杂的条件
LOWER(string param) UPPER(string param) YEAR(date param) .....
详细介绍在hibernate-distrbution文件的documentation\manual\zh-CN\pdf目录中查看
四、HQL参数注入
创建HQL查询对象:

一般非固定参数的注入方式,即字符串拼接处理:

当然,HQL也提供了对应的参数注入方式:

所以Hibernate可以对参数注入进行一个遍历的封装:

五、连接查询
1、内连接
FROM xxx.domain.DomainClass [AS dc]
[INNER] JOIN [FETCH] dc.property 2、外连接
FROM xxx.domain.DomainClass [AS dc]
LEFT [OUTER] JOIN [FETCH] dc.property 3、等值链接
FROM
xxx.domain.DomainClass1 AS dc1,
xxx.domain.DomainClass2 AS dc2
WHERE
dc1 = dc2.dc1 4、隐式内连接
FROM
xxx.domain.DomainClass1 AS dc1
WHERE
dc1.dc2.property = ?
6、聚合函数
1、求最大值 MAX(property-param)
2、求最小值 MIN(property-param)
3、求平均值 AVG(property-param)
4、求和 SUM(property-param)
5、计数 COUNT(property-param)
另外还可以结合Object数组的形式和UniqueResult返回上述的结果:

7、分组查询
分组查询的结果并不是按照通常的映射对象结果来处理,也就不存在映射关系
一般的处理是使用List<Obejct[ ]>,和普通SQL相似,这里不再赘述了
8、子查询

对于子查询,HQL提供了几个关键字可以对子查询的结果进行量化处理
1、ALL 子查询的所有记录
2、ANY 子查询的任意记录
3、SOME 子查询的任意记录
4、IN 子查询的任意记录
5、EXISTS 至少返回一条记录
9、集合函数与属性
1、获取集合元素数量,或者称为集合长度 size()
2、获取最小索引,也就是起始索引? minIndex()
3、获取最大索引,也就是结尾索引? maxIndex()
4、最小元素 minElement()
5、最大元素 maxElement()
6、获取所有元素 elements()
在对关联映射的子查询中是非常好用的,可以省略书写大部分的HQL语句
【Hibernate】Re01.6 HQL的更多相关文章
- 【Hibernate】Hibernate的多表查询
在<[Hibernate]Hibernate的聚类查询.分组查询.排序与时间之差>(点击打开链接)一文中已经讲述过怎样利用HQL语句代替SQL语句.进行聚类查询.分组查询.排序与时间之差的 ...
- 【hibernate】映射继承关系
[hibernate]映射继承关系 转载:https://www.cnblogs.com/yangchongxing/p/10405151.html ========================= ...
- 【hibernate】自定义转换器
[hibernate]自定义转换器 转载:https://www.cnblogs.com/yangchongxing/p/10398255.html 1.转换基本属性 package cn.ycx.s ...
- 【hibernate】存储图片
[hibernate]存储图片 转载: package cn.ycx.study.hibernate.entity; import javax.persistence.Entity; import j ...
- 【hibernate】映射可嵌入式组件
[hibernate]映射可嵌入式组件 转载:https://www.cnblogs.com/yangchongxing/p/10376452.html 可嵌入 Address 类,没有对应的数据表 ...
- 【hibernate】应用程序级别的视图
[hibernate]应用程序级别的视图 转载:https://www.cnblogs.com/yangchongxing/p/10361281.html 在没有数据库修改权限时,像创建视图可以使用 ...
- 【hibernate】重写物理表名和列明
[hibernate]重写物理表名和列明 转载:https://www.cnblogs.com/yangchongxing/p/10357123.html 假设你的数据库命名有这样的需求,表都以 yc ...
- 【hibernate】常用注解
[hibernate]常用注解 转载:https://www.cnblogs.com/yangchongxing/p/10357118.html 目录 ======================== ...
- 【hibernate】hibernate不同版本的命名策略
===================================================hibernate 4命名策略如下================================ ...
- 【Hibernate】Hibernate系列6之HQL查询
HQL查询 6.1.概述 6.2.分页查询 6.3.命名查询 6.4.投影查询-部分字段查询 6.5.报表查询 6.6.迫切左外连接.左外连接 6.7.迫切内连接.内连接 6.8.QBC查询.本地查询
随机推荐
- 使用 openssl 从cer公钥证书中导出公钥pem
使用 openssl 从cer公钥证书中导出公钥pem ---------- "der 公钥证书"转 "base64 公钥证书"openssl x509 -in ...
- bili-emoji自定义表情包设置
使用图床上传图片.推荐使用聚合图床,简单免费 把图片的图床链接复制到一个txt文件中,如abc.txt 将abc.txt放到koishi目录的非node_modules\koishi-plugin-e ...
- monaco-editor 的 Language Services
我们是袋鼠云数栈 UED 团队,致力于打造优秀的一站式数据中台产品.我们始终保持工匠精神,探索前端道路,为社区积累并传播经验价值. 本文作者:修能 这是一段平平无奇的 SQL 语法 SELECT id ...
- 利用Wireshark抓包分析DNS域名解析过程
一.DNS协议概述 DNS协议也可以称为DNS服务,全称是Domain Name System,即域名系统,和HTTP协议一样,也是一个位于应用层的协议(服务),它是基于运输层的UDP协议的.从D ...
- LocalDateTime与LocalDate之间转换
LocalDateTime与LocalDate之间转换 //LocalDateTime转换LocalDate LocalDateTime now2 = LocalDateTime.now(); Loc ...
- http请求方式-RestTemplate
http请求方式-RestTemplate import com.alibaba.fastjson.JSON; import com.example.core.mydemo.http.OrderReq ...
- WIndow Server 2019 服务器 MinIO下载并IIS配置反向代理
1.官网下载并配置 下载MinIO Serve地址(不需要安装,放在目录就行) https://dl.min.io/server/minio/release/windows-amd64/minio.e ...
- hdu4135题解 容斥
Problem Description Given a number N, you are asked to count the number of integers between A and B ...
- 实验8.Vlan Hybrid实验
# 实验8.Vlan Hybrid实验 本实验用于测试华为独有的混合式接口类型hybrid 实验组 配置交换机 对交换机sw1与sw2做具体配置 SW1 vlan ba 10 20 100 int g ...
- Wireshark抓包分析理解DHCP协议及工作流程
一.DHCP简介 DHCP(Dynamic Host Configuration Protocol)动态主机配置协议,前身是BOOTP协议.在大型局域网中,需要给很多主机配置地址信息,如果采用传统 ...