Hibernate查询语句HQL

本文介绍了Hibernate查询语言(HQL)的基础知识,包括HQL的特点、语法结构及如何使用HQL进行对象查询。涵盖从简单查询到复杂条件筛选的多种应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

HQL

  • Hibernate Query Language, Hibernate查询语言
  • HQL是面向对象的查询语言
  • HQL映射配置的持久化类及其属性;SQL数据库表
  • HQL提供了丰富灵活的查询特性,Hibernate官方推荐查询方式
  • HQL语句形式: select…from…where…group by…having…order by…
  • HQL是面向对象的查询语言,对Java类与属性大小写敏感
  • HQL对关键字不区分大小写

  • org.hibernate.Query接口

    • 接口定义有执行查询的方法
      Markdown
    • Query接口支持方法链编程(调用方法后,返回的结果还是调用方法的这个对象,多用于查询参数的动态设置)风格,使得程序代码更为简洁
  • Query实例的创建
    • Session的createQuery()方法创建Query实例
    • createQuery方法包含一个HQL语句参数,createQuery(hql)
  • 执行查询
    • Query接口的list()方法执行HQL查询
    • list()方法返回结果数据类型为java.util.List,List集合中存放符合查询条件的持久化对象

查询子句

检索对象——from子句

  • HQL语句的最简形式
  • from指定了HQL语句查询主题——持久化类及其属性
  • from子句中持久化类的引用:
    • 不需要引入持久化类的全限定名,直接引入类名(hibernate会根据映射配置文件信息自动引入)
    • auto-import(自动引入)缺省情况
  • from子句中别名的应用
    • 为被查询的类指定别名
    • 在HQL语句其他部分通过别名引用该类
    • 别名的命名习惯:别名多与持久化类名相同,小写;如:”from Seller as seller”

选择——select子句

  • 以Object[]形式返回选择的属性(默认返回格式),如果返回的信息只有一个属性,那么返回的就是List,而不是List

限制——where子句

  • 比较运算
    • =、<>、<、>、>=、<=
    • null值判断—is [not] null
  • 范围运算
    • [not] in (列表)
    • [not] between 值1 and 值2
  • 字符串模式匹配
    • like关键字(模糊匹配)
    • 通配符%(任意个字符),_(一个字符)
  • 逻辑运算
    • and(逻辑与)、or(逻辑或)
    • not(逻辑非)
  • 集合运算
    • is [not] empty 集合[不]为空,不包含任何元素
    • member of 元素属于集合
    • empty -> exists, member of -> in
       
      String hql = "from Order order where order.orderItems is not empty";
  • 在HQL中使用+-*/运算符
    • HQL语句中可以使用+-*/四则运算
    • 四则运算可以再在where子句和select子句中使用
  • 查询单个对象(uniqueResult方法)
    • Query接口的uniqueResult方法
    • where子句条件的设置(如果返回的对象超过一个,会抛出异常)
       
      String hql = "from Seller seller where seller.id='1'"
      Query query = session.createQuery(hql);
      Seller seller = (Seller)query.uniqueResult();

排序——order by子句

  • 升序:asc(默认升序),降序:desc
  • 多个排序规则:

String hql = "from Seller seller order by seller.gender asc, seller.id desc"
Query query = session.createQuery(hql);
List sellers = query.list();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值