以下内容来自慕课网视频—-《HQL数据查询基础》
第二章 了解HQL
- HQL定义
- Hibernate Query Language,Hibernate查询语句
- HQL是面向对象的查询语句,映射配置的持久化类及其属性。SQL是数据表查询。
- HQL提供了丰富灵活的查询特性,Hibernate官方推荐查询方式
- HQL语句形式
select...from...where...group by...having...order by...
from语句是HQL语句中不可或缺的部分,一个最简单的HQL语句就是一个from语句。
- 初学HQL注意的问题
- HQL是面向对象的查询语句,对Java类与属性大小写敏感,SQL对数据表的查询,对大小写不敏感。
- HQL对关键字不区分大小写
第三章 准备查询
3-2 Query接口简介
- org.hibernate.Query接口
- Query接口定义有执行查询的方法。
- Query接口支持方法链编程风格,使得程序代码更为简洁
- Query实例的创建
- Session的createQuery方法创建Query实例
- createQuery方法包含一个HQL语句参数,createQuery(hql)
- Query执行查询
- Query接口的list()方法执行HQL查询
- list()方法返回结果数据类型为java.util.List,List集合中存放符合查询条件的持久化对象
3-3 Query接口应用编程示例
- 示例数据库表关系
- 简单的查询示例
第四章 检索对象-from子句
- from 子句
- HQL语句最简单形式
- from制定了HQL语句查询主体—持久化类及其属性
- from 子句中别名的应用
- 为被查询的类指定别名
- 在HQL语句其他部分通过别名引用该类。
- 别名关键字as也可以省略
第五章 选择-select子句
- 在select子句中指定了选择的对象和属性之后,以哪种数据类型返回查询结果,主要有一下几种:
- 以Object[]对象数组的形式返回选择的属性
- 以List集合的形式返回选择的属性
- 以map的形式返回选择的属性
- 以自定义类型返回选择的属性
- 以distinct关键字获取独特的查询结果
- 以Object[]形式返回
- 如果select子句中未指定返回的数据类型,则默认为Object[]
- 如果select子句中只查询一条属性,则返回的是Object而不是Object[]
- 以List形式返回查询结果
- 在select子句中使用new list指定返回查询结果的类型
- 使用什么类型返回查询结果并没有什么优劣,仅是根据自己的使用习惯选择
- 以Map形式返回查询结果
- select子句中使用new map指定
- key值为select子句中属性的索引值,字符串类型
- 或通过别名的形式获取属性(推荐)
- 以自定义类型返回查询结果
- 持久化类中定义对应的构造器
- select子句中调用定义的构造器
- 没有select子句时,默认的返回类型是from子句对应的持久化类,hibernate会调用该类的无参构造器
- distinct关键字
- 使用distinct关键字去除查询结果中的重复元素
第六章 限制-where子句
- 比较运算
- 比较运算符主要有:=、<>、<、>、>=、<=
- null值 判断:is [not] null
- 范围运算,判断属性值是否在给定的范围之内
- [not] in (列表),列表可以是明确指出,也可以是一条子查询,属性值在该列表中存在,返回true,不存在返回false。
- [not] between 值1 and 值2,属性值在值1和值2之间返回true,否则返回false。
- 字符串模式匹配
- 使用like关键字模糊匹配字符串
- 通配符:%,表示任意个字符;_,表示一个字符。
- 逻辑运算
- and(逻辑与)、or(逻辑或)、not(逻辑非)
- 集合运算
- 在持久化的映射中存在一对多的属性配置,在这里我们可以通过集合运算符做相应的判定运算。
- 四则运算
- 查询单个对象
- Query接口的uniqueResult方法查询后返回单个实例对象,而不返回List集合
- where子句条件的设置,保证子句的查询条件仅有一个或者不存在,如果查询条件设置不当,符合条件的对象多于一个,则会抛出异常,并终止运行。
第七章 order by子句
- 使用order by子句对查询
结果排序。
- 升序排序 asc
- 降序排序 desc
- 若不在order by子句中显式设置则默认升序排序。
- 设置多个排序规则