`

HQL 操作符

hql 
阅读更多

HQL 常用操作符 描述
. 导航路径表达式操作符
+,- 一元正负号
*,/ 乘除法
+,- 加减法
=,<>,<,>,>=,<=,[NOT]BETWEEN[NOT] LIKE,[NOT] IN,IS [NOT] NULL,IS [NOT] EMPTY 二元比较操作符


NOT,AND,OR 逻辑操作符

HQL操作符



(b)    HQL常用函数
Sql代码
1. FROM User u where lower(u.email) = 'foo@163.com' --小写 
2. FROM User u where lower(u.email) = 'foo@163.com' --大写 
3. FROM User u where concat(u.firstname,u.lastname) like 'G% K%' --拼接字符串 
4. FROM User u where size(u.bids) > 3 --集合大小 
 
HQL 函数
HQL 常用操作符 描述
UPPER(s),LOWER(s) 大小写
CONCAT(s1,s2) 连接字符串
SUBSTRING(s,offset,length) 取子串
TRIM() 去空格
LENGTH(s) 长度
LOCATE(search,s,offset) 搜索位置
ABS(n),SQRT(n),MOD(dividend,divisor) 绝对值,开方,除法
SIZE 大小写
BIT_LENGTH(s) 位数
CUTTENT_DATE() 当前时间
CURRENT_TIME()
CURRENT_TIMESTAMP()
SECOND(d) 获取时间的不同部分
MINUTE(d)
HOUR(d)
DAY(d)
MONTH(d)
YEAR(d)
CAST(t as TYPE) 类型转换

HQL函数

节 10.03    Order表达式

Sql代码
1. FROM CUSTOMERS as customers WHERE customers.id=1  
2. ORDER BY customers.id FROM CUSTOMERS as customers  
3. ORDER BY customers.lastname asc,firstname asc 
 

节 10.04    投影查询
Sql代码
1. SELECT user.username,user.password FROM UserInfo user 
 

注:1、在使用Select子句查询时,要给表对象起一个别名。
    2、查询出的结果集是一个Object[]数组。
节 10.05    表关联
(a)    隐式关联连接
Sql代码
1. FROM User u WHERE u.homeAddress.city = 'BJ' 
2. SELECT distinct u.homeAddress.city FROM User u 
3. FROM Bid bid WHERE bid.item.description like '%FOO%' 
 

(b)    普通联结
Sql代码
1. FROM ITEM i JOIN i.bids b WHERE i.description like '%Foo%' AND b.amount > 100 
 
Java代码
1. Iterator iterator = query.list().iterator(); 
2. while(iterator.hasNext()){ 
3. Object[] pair = (Object[])iterator.next(); 
4. Item item = (Item)pair[0]; 
5. Bid bid = (Bid)pair[1]; 
6. } 
 

Sql代码
1. SELECT i FROM ITEM i JOIN i.bids b WHERE i.description like '%Foo%' AND b.amount >100 
 

Java代码
1. Iterator iterator = query.list().iterator(); 
2. while(iterator.hasNext()){ 
3. Item item = (Item)i.next();} 
 
Sql代码
1. FROM ITEM i LEFT JOIN i.bids b WITH b.amount >1000 WHERE i.description 
2. like '%Foo%' --WITH额外联结条件 
 

(c)    抓取联结
fetch 连接允许仅使用一个select语句就将关联的对象或一组集合随他们父对象的初始化而初始化。
Sql代码
1. FROM ITEM i LEFT JOIN FETCH i.bids WHERE i.description LIKE '%Foo%' 
 

注:普通联结同抓取联结的区别:
1、    生成的SQL语句虽然有连接,但是并没有取连接表的数据,还是需要单独的sql取数据。
2、    抓取联结一次性将所需要的数据装入内存中。
3、    当lazy=true时,抓取策略失效。
节 10.06    报表查询
(a)    统计函数投影
Sql代码
1. SELECT COUNT(user.id), MAX(user.id), SUM(user.id),MIN(user.id),AVG(user.score)   
2. FROM UserInfo user 
 

注:因为属于投影查询所以返回的结果为Object[]数组
(b)    分组
Sql代码
1. SELECT u.lastname,count(u) FROM User u group by u.lastname 
2. SELECT bid.item.id,avg(bid.amount) FROM Bid bid GROUP BY bid.item.id 
3. SELECT bid.item.id,count(bid),avg(bid.amount)  
4. FROM Bid bid WHERE bid.item.successfulBid IS NULL GROUP BY bid.item.id 
5. SELECT bidItem.id,count(bid),avg(bid.amount) 
6. FROM Bid bid JOIN bid.item bidItem WHERE bidItem.successfulBid IS NULL GROUP BY bidItem.id 
7. SELECT item.id,count(bid),avg(bid.amount)  
8. FROM Item item JOIN item.bids.bid WHERE item.successfulBid IS NULL  
9. GROUP BY item.id HAVING count(bid) >10 
 

节 10.07    子查询
Sql代码
1. FROM User u WHERE 10 < (SELECT count(i) from u.items i where i.successfulBid IS NOT NULL) 
2. FROM Item i WHERE 100 > all(SELECT b.amount FROM i.bids b) --出价小于100 
3. FROM Item i WHERE 100 > any(SELECT b.amount FROM i.bids b) --出价大于100 
4. FROM Item i WHERE 100 > some(SELECT b.amount FROM i.bids b)  --出价等于100 
5. FROM Item i WHERE 100 IN (SELECT b.amount FROM i.bids b)  --出价等于100 
分享到:
评论

相关推荐

    HQL查询pdf资料

    HQL支持多种表达式和操作符,包括但不限于`BETWEEN`、`IN`、`IS NULL`、`LIKE`等,这使得HQL具有很高的灵活性和表达能力。 #### 属性查询 除了查询整个实体,HQL还允许查询实体的特定属性。例如,只查询所有用户的...

    hql语句 使用大全

    ### HQL语句使用大全 HQL(Hibernate Query Language)是一种...以上介绍了HQL的基础语法及常用操作,HQL的强大之处在于其灵活性和易用性,掌握了这些基本用法后,开发人员可以根据具体需求编写出更复杂的查询语句。

    hibernate_hql.rar_HQL

    HQL支持多种条件查询,包括等于、不等于、大于、小于等操作符。如查询所有年龄大于20岁的用户: ```java String hql = "from User where age &gt; 20"; ``` 同时,HQL还支持like、in、between等特殊查询条件。 三、HQL...

    HibernateHql综合测试小程序

    2. **条件查询**:HQL支持多种比较操作符(=, !=, &lt;, &gt;, , &gt;=)以及逻辑运算符(AND, OR, NOT),例如`select e from Employee e where e.age &gt; 30`。 3. **投影**:可以指定查询结果返回哪些字段,例如`select e....

    Hibernate HQL详解.docx

    若要查询id在特定集合中的用户,可以使用`IN`操作符,如`FROM User where id IN (:ids)`,并使用`.setParameterList("ids", new Object[]{1,3,4})`传递数组。 9. **使用命名查询**: 命名查询将HQL语句写在`.hbm....

    HQL详解

    总的来说,HQL是Hibernate框架中一个强大的工具,它极大地简化了Java应用程序中的数据查询工作,使得开发人员能够更加专注于业务逻辑,而不是数据库操作。通过熟练掌握HQL,可以提升开发效率,减少出错概率,提高...

    HQL与SQL的区别

    SQL提供了丰富的函数和操作符,可以对数据进行各种复杂的处理。 HQL在某些情况下可能需要Hibernate或其他ORM框架进行转换为SQL,这个转换过程可能会引入额外的开销。然而,现代的ORM框架通常都提供了良好的性能优化...

    Hibernate 课件_HQL

    - **定义**: HQL(Hibernate Query Language)是一种面向对象的查询语言,它的语法类似于SQL,但不同于直接操作数据库表,HQL操作的是持久化的Java对象。这意味着在编写查询时,可以使用Java对象模型中的类名和属性...

    hql精点查询语句.doc

    HQL支持各种比较和逻辑操作符,如`=`、`&lt;&gt;`、`&gt;`、`、`&gt;=`、`、`between`、`not between`、`in`、`not in`、`is`、`like`等,用于构建复杂的查询条件。 示例: - `from DomesticCat cat where cat.name between 'A'...

    hql基础语句

    HQL(Hibernate Query Language)是Hibernate框架中用于操作对象关系映射(ORM)的查询语言,它是SQL的面向对象版本,使得开发者可以更方便地在Java应用中进行数据库查询。本教程将深入讲解HQL的基础语句,包括ID...

    hql模糊查询hql模糊查询

    HQL是Hibernate框架提供的一种面向对象的查询语言,它允许开发人员以一种更接近于面向对象的方式进行数据查询操作。模糊查询作为HQL中的一项重要功能,主要用于处理那些不完全确定的数据检索需求,如用户可能只记得...

    hibernate -HQL

    2. **比较操作**:利用比较操作符(如`&gt;`, `, `!=`, `in`, `between`, `like`等)进行更复杂的筛选。例如,`"from User as user where user.age &gt; 20"`,或`"from User as user where user.name like 't%'"`,这些...

    HQL的具体内容和使用

    Hibernate Query Language(HQL)是Hibernate框架中专用于对象关系映射(ORM)的查询语言,它使得开发者能够以面向对象的方式来查询...掌握HQL可以帮助我们在使用Hibernate进行ORM开发时更加高效地进行数据查询和操作。

    hibernate hql大全

    Hibernate Query Language(HQL)是Hibernate框架提供的面向对象的查询语言,它允许开发者以类和属性的名称进行查询,而不是直接操作数据库的表和列。HQL的强大之处在于它将数据库操作与业务逻辑解耦,使得代码更...

    Spring--HQL-chaxun.zip_HQL

    HQL提供了`IN`、`NOT IN`、`MEMBER OF`等操作符,便于处理集合属性。 10. **函数与方法调用**: HQL支持内置的数学、字符串和日期函数,也可以调用实体类中的方法。 通过学习“Spring中常用的HQL查询方法.doc”...

    HQL 语法总结 实体查询

    ### HQL语法总结:实体查询详解 #### 一、实体查询概述 HQL(Hibernate Query Language)是一种面向对象的查询语言,它允许开发者以一种类似于SQL但更接近于面向对象的方式来编写查询。本文将详细介绍HQL中的实体...

    关于HQL相关的论文

    2. **函数与操作符**:HQL提供了丰富的函数,如聚合函数(sum、avg等)、日期时间处理函数,以及比较操作符(=、&lt;、&gt;等)。 3. **动态查询**:通过使用Criteria API或者Querydsl等工具,可以构建动态HQL,实现灵活...

    HQL常用函数大全.docx

    **描述**:此操作符用于比较两个表达式的值是否相等。如果表达式 `A` 与表达式 `B` 的值相同,则返回 `TRUE`;否则返回 `FALSE`。 ##### 2. 不等值比较 (`&lt;&gt;` 或 `!=`) **语法**:`A &lt;&gt; B` 或 `A != B` **操作...

    hql语句的学习,很有用的东西

    与SQL不同,HQL直接操作对象和实体,这使得代码更易于理解和维护。例如,如果你想从数据库中获取所有User对象,你可以使用如下HQL: ```java Query query = session.createQuery("from User"); List&lt;User&gt; users = ...

Global site tag (gtag.js) - Google Analytics