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