一、支持的查询方式

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的更多相关文章

  1. 【Hibernate】Hibernate的多表查询

    在<[Hibernate]Hibernate的聚类查询.分组查询.排序与时间之差>(点击打开链接)一文中已经讲述过怎样利用HQL语句代替SQL语句.进行聚类查询.分组查询.排序与时间之差的 ...

  2. 【hibernate】映射继承关系

    [hibernate]映射继承关系 转载:https://www.cnblogs.com/yangchongxing/p/10405151.html ========================= ...

  3. 【hibernate】自定义转换器

    [hibernate]自定义转换器 转载:https://www.cnblogs.com/yangchongxing/p/10398255.html 1.转换基本属性 package cn.ycx.s ...

  4. 【hibernate】存储图片

    [hibernate]存储图片 转载: package cn.ycx.study.hibernate.entity; import javax.persistence.Entity; import j ...

  5. 【hibernate】映射可嵌入式组件

    [hibernate]映射可嵌入式组件 转载:https://www.cnblogs.com/yangchongxing/p/10376452.html 可嵌入 Address 类,没有对应的数据表 ...

  6. 【hibernate】应用程序级别的视图

    [hibernate]应用程序级别的视图 转载:https://www.cnblogs.com/yangchongxing/p/10361281.html 在没有数据库修改权限时,像创建视图可以使用 ...

  7. 【hibernate】重写物理表名和列明

    [hibernate]重写物理表名和列明 转载:https://www.cnblogs.com/yangchongxing/p/10357123.html 假设你的数据库命名有这样的需求,表都以 yc ...

  8. 【hibernate】常用注解

    [hibernate]常用注解 转载:https://www.cnblogs.com/yangchongxing/p/10357118.html 目录 ======================== ...

  9. 【hibernate】hibernate不同版本的命名策略

    ===================================================hibernate 4命名策略如下================================ ...

  10. 【Hibernate】Hibernate系列6之HQL查询

    HQL查询 6.1.概述 6.2.分页查询 6.3.命名查询 6.4.投影查询-部分字段查询 6.5.报表查询 6.6.迫切左外连接.左外连接 6.7.迫切内连接.内连接 6.8.QBC查询.本地查询

随机推荐

  1. IDEA:java: Compilation failed: internal java compiler error

    java: Compilation failed: internal java compiler error 解决方法: 1.打开菜单 ,File - Project Structure - Proj ...

  2. win10无线网卡不会自动连接

    usb接口的网卡.win10无线网卡不会自动连接. 解决方法: 第一步:在控制面板\网络和 Internet\网络连接中,禁用再启用一次无线网络. 第二步:在 控制面板\硬件和声音\电源选项\选择电源 ...

  3. 模拟登录之web监控

    1.什么是web监控 zabbix除了能通过 脚本+自定义key,实现服务器数据提取监控以外 也支持对网页的HTTP请求.响应监控. 2.web监控需求 以zabbix-UI页面的登录监控,模拟登录, ...

  4. tortoisegit 配置ssh登录

    习惯使用小乌龟. 服务器:gitblit 客户端:TortoiseGit 2.13.0.1 (C:\Program Files\TortoiseGit\bin) git version 2.36.1. ...

  5. 记录一下第一次webSocket通信成功

    webSocket前端代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset=& ...

  6. 记一个,生产遇到的redission锁,释放问题:lock.tryLock(0, 0, TimeUnit.SECONDS)

    package com.aswatson.cdc.test; import org.redisson.Redisson; import org.redisson.api.RLock; import o ...

  7. arm linux 移植 ffmpeg 库 + x264 + x265

    背景 Ffmpeg 中带有h264的解码,没有编码,需要添加x264.libx264是一个自由的H.264编码库,是x264项目的一部分,使用广泛,ffmpeg的H.264实现就是用的libx264. ...

  8. 【论文阅读】IROS2022: Dynamics-Aware Spatiotemporal Occupancy Prediction in Urban Environments

    0.参考与前言 完整题目: Dynamics-Aware Spatiotemporal Occupancy Prediction in Urban Environments 论文链接:https:// ...

  9. 3568F-翼辉SylixOS国产操作系统演示案例

     

  10. 【Zabbix】Zabbix5.0安装部署问题汇总

    报错信息:No package 'oniguruma' found 解决方法:https://www.limstash.com/articles/202003/1563 报错信息: PHP bcmat ...