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
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值