HQL数据查询基础笔记

来源:互联网 发布:最新cpi数据 编辑:程序博客网 时间:2024/06/07 02:02

以下内容来自慕课网视频—-《HQL数据查询基础》

  • 第二章 了解HQL
  • 第三章 准备查询
    • 3-2 Query接口简介
    • 3-3 Query接口应用编程示例
  • 第四章 检索对象-from子句
  • 第五章 选择-select子句
  • 第六章 限制-where子句
  • 第七章 order by子句

第二章 了解HQL

  1. HQL定义
    • Hibernate Query Language,Hibernate查询语句
    • HQL是面向对象的查询语句,映射配置的持久化类及其属性。SQL是数据表查询。
    • HQL提供了丰富灵活的查询特性,Hibernate官方推荐查询方式

  2. HQL语句形式
    select...from...where...group by...having...order by...
    from语句是HQL语句中不可或缺的部分,一个最简单的HQL语句就是一个from语句。

  3. 初学HQL注意的问题
    • HQL是面向对象的查询语句,对Java类与属性大小写敏感,SQL对数据表的查询,对大小写不敏感。
    • HQL对关键字不区分大小写

第三章 准备查询

3-2 Query接口简介

  1. org.hibernate.Query接口
    • Query接口定义有执行查询的方法。
      这里写图片描述
    • Query接口支持方法链编程风格,使得程序代码更为简洁

  2. Query实例的创建
    • Session的createQuery方法创建Query实例
    • createQuery方法包含一个HQL语句参数,createQuery(hql)

  3. Query执行查询
    • Query接口的list()方法执行HQL查询
    • list()方法返回结果数据类型为java.util.List,List集合中存放符合查询条件的持久化对象

3-3 Query接口应用编程示例

  1. 示例数据库表关系
    这里写图片描述

  2. 简单的查询示例
    这里写图片描述

第四章 检索对象-from子句

  1. from 子句
    • HQL语句最简单形式
    • from制定了HQL语句查询主体—持久化类及其属性
      这里写图片描述

  2. from 子句中别名的应用
    • 为被查询的类指定别名
    • 在HQL语句其他部分通过别名引用该类。
      这里写图片描述
    • 别名关键字as也可以省略
      这里写图片描述

第五章 选择-select子句

  1. 在select子句中指定了选择的对象和属性之后,以哪种数据类型返回查询结果,主要有一下几种:
    • 以Object[]对象数组的形式返回选择的属性
    • 以List集合的形式返回选择的属性
    • 以map的形式返回选择的属性
    • 以自定义类型返回选择的属性
    • 以distinct关键字获取独特的查询结果

  2. 以Object[]形式返回
    • 如果select子句中未指定返回的数据类型,则默认为Object[]
      这里写图片描述
    • 如果select子句中只查询一条属性,则返回的是Object而不是Object[]
      这里写图片描述

  3. 以List形式返回查询结果
    • 在select子句中使用new list指定返回查询结果的类型
      这里写图片描述
    • 使用什么类型返回查询结果并没有什么优劣,仅是根据自己的使用习惯选择

  4. 以Map形式返回查询结果
    • select子句中使用new map指定
    • key值为select子句中属性的索引值,字符串类型
      这里写图片描述
    • 或通过别名的形式获取属性(推荐)
      这里写图片描述

  5. 以自定义类型返回查询结果
    • 持久化类中定义对应的构造器
      这里写图片描述
    • select子句中调用定义的构造器
      这里写图片描述
    • 没有select子句时,默认的返回类型是from子句对应的持久化类,hibernate会调用该类的无参构造器
      这里写图片描述

  6. distinct关键字
    • 使用distinct关键字去除查询结果中的重复元素
      这里写图片描述

第六章 限制-where子句

  1. 比较运算
    • 比较运算符主要有:=、<>、<、>、>=、<=
      这里写图片描述
    • null值 判断:is [not] null
      这里写图片描述
      这里写图片描述
      这里写图片描述

  2. 范围运算,判断属性值是否在给定的范围之内
    • [not] in (列表),列表可以是明确指出,也可以是一条子查询,属性值在该列表中存在,返回true,不存在返回false。
      这里写图片描述
    • [not] between 值1 and 值2,属性值在值1和值2之间返回true,否则返回false。
      这里写图片描述

  3. 字符串模式匹配
    • 使用like关键字模糊匹配字符串
    • 通配符:%,表示任意个字符;_,表示一个字符。
      这里写图片描述

  4. 逻辑运算
    • and(逻辑与)、or(逻辑或)、not(逻辑非)
      这里写图片描述

  5. 集合运算
    • 在持久化的映射中存在一对多的属性配置,在这里我们可以通过集合运算符做相应的判定运算。
      这里写图片描述
      这里写图片描述

  6. 四则运算
    这里写图片描述
    这里写图片描述

  7. 查询单个对象
    • Query接口的uniqueResult方法查询后返回单个实例对象,而不返回List集合
    • where子句条件的设置,保证子句的查询条件仅有一个或者不存在,如果查询条件设置不当,符合条件的对象多于一个,则会抛出异常,并终止运行。
      这里写图片描述

第七章 order by子句

  1. 使用order by子句对查询
    结果排序。
    • 升序排序 asc
    • 降序排序 desc
    • 若不在order by子句中显式设置则默认升序排序。
      这里写图片描述
    • 设置多个排序规则
      这里写图片描述
0 0