zoukankan      html  css  js  c++  java
  • 【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

    或者非空判断:

    1WHERE 别名.属性名 IS NULL
    
    2WHERE 别名.属性名 IS NOT NULL

    非空字符串判断:

    1WHERE 别名.属性名 IS EMPTY
    
    2WHERE 别名.属性名 IS NOT EMPTY

    Member Of ?

    MEMBER OF
    &
    NOT MEMBER OF

    Hibernate还提供了相关的表达式,可以处理更为复杂的条件

    LOWER(string param)
    
    UPPER(string param)
    
    YEAR(date param)
    
    .....

    详细介绍在hibernate-distrbution文件的documentationmanualzh-CNpdf目录中查看

    四、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提供了几个关键字可以对子查询的结果进行量化处理

    1ALL       子查询的所有记录
    2ANY       子查询的任意记录
    3SOME      子查询的任意记录
    4IN        子查询的任意记录
    5EXISTS    至少返回一条记录

    9、集合函数与属性

    1、获取集合元素数量,或者称为集合长度  size()
    2、获取最小索引,也就是起始索引?     minIndex()
    3、获取最大索引,也就是结尾索引?     maxIndex()
    4、最小元素                minElement()
    5、最大元素                maxElement()
    6、获取所有元素              elements()

    在对关联映射的子查询中是非常好用的,可以省略书写大部分的HQL语句

  • 相关阅读:
    鸡尾酒之白兰地
    Hadoop面试总结(三)Hbase、Spark
    Hadoop面试总结(二)MySQL
    Hadoop面试总结(一)Linux命令、Scala
    View
    用户画像项目规划
    Apache kafka
    Resume
    蔡学镛
    【git】git常用操作
  • 原文地址:https://www.cnblogs.com/mindzone/p/13735825.html
Copyright © 2011-2022 走看看