HQL

作者: 策马踏清风 | 来源:发表于2020-08-14 14:48 被阅读0次

HQLHibernate Query Language的缩写,提供更加丰富灵活、强大的查询能力,接近SQL语句。

和SQL的区别

  1. HQL:
  • 对查询对象进行了面向对象的封装。from 类名+类对象 where 对象属性
  • 区分大小写,关键字不区分大小写
  • 占位符下标从0开始计算(hibernate5 后不支持)
  • 支持命名参数
  1. SQL
  • 面向数据库表查询。from 表名 where 表中字段
  • 不区分大小写
  • 从1开始计算位置
  • 不支持:命名参数

查询返回结果

  1. 单个对象
  2. 多个
  • object[]
  • list
  1. 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);
    }
}
  1. 返回String
select b.bookName from book b
  1. 返回Object
select b.bookId,b.bookName from Book b
  1. 返回对象
select new Book(b.bookId, b.bookName) from Book b
  1. 返回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();

相关文章

网友评论

      本文标题:HQL

      本文链接:https://www.haomeiwen.com/subject/jxnluhtx.html