文章字数:234,阅读全文大约需要1分钟
HQL
是Hibernate Query Language
的缩写,提供更加丰富灵活、强大的查询能力,接近SQL
语句。
和SQL的区别
- HQL:
- 对查询对象进行了面向对象的封装。
from 类名+类对象 where 对象属性
- 区分大小写,关键字不区分大小写
- 占位符下标从0开始计算(hibernate5 后不支持)
- 支持命名参数
- SQL
- 面向数据库表查询。
from 表名 where 表中字段
- 不区分大小写
- 从1开始计算位置
- 不支持:命名参数
查询返回结果
- 单个对象
- 多个
- object[]
- list
- Map
使用例子
1 | public void test(){ |
返回
String
1
select b.bookName from book b
返回
Object
1
select b.bookId,b.bookName from Book b
返回对象
1
select new Book(b.bookId, b.bookName) from Book b
返回
Map
1
select new map(b.bookId,b.bookName) from Book b
占位符
1 | Query query = session.createQuery("from Book where bookId in (:bookIds)"); |
hibernate5
之后
1 | Query query = session.createQuery("from Book where bookId in (:bookIds)"); |
连接查询
1 | select o.orderNo,oi.quantity from Order o, OderItem oi where o = oi.order |
函数
sun
总共avg
平均max
最大min
最小count
总共
分页
1 | Query query = session.createQuery("from Book"); |