文章字数:234,阅读全文大约需要1分钟
HQL是Hibernate Query Language的缩写,提供更加丰富灵活、强大的查询能力,接近SQL语句。
和SQL的区别
- HQL:
- 对查询对象进行了面向对象的封装。
from 类名+类对象 where 对象属性 - 区分大小写,关键字不区分大小写
- 占位符下标从0开始计算(hibernate5 后不支持)
- 支持命名参数
- SQL
- 面向数据库表查询。
from 表名 where 表中字段 - 不区分大小写
- 从1开始计算位置
- 不支持:命名参数
查询返回结果
- 单个对象
- 多个
- object[]
- list
- Map
使用例子
1 | public void test(){ |
返回
String1
select b.bookName from book b
返回
Object1
select b.bookId,b.bookName from Book b
返回对象
1
select new Book(b.bookId, b.bookName) from Book b
返回
Map1
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"); |