Hibernate-HQL

Hibernate Query language,语法同SQL基本一致,但其中使用的实体类和类的属性,而非表名和表的列名

声明

Query query = session.createQery(String hql);

查询

list

返回List对象

List<POJO> list = query.list();

iterate

返回Iterator对象

Iterator<POJO> it = query.iterate();

listiterate的区别

list会一次性查询所有结果。

iterate会一次性查询所有主键,并在调用iterator.next()时优先查询缓存中该主键对应的记录。

iterate会更好的利用缓存。

select

选择多个列时,返回List<Object[]>列表

占位符

PreparedStatement一样,可以使用占位符'?'

设置占位符的值: query.setType(index, value); //index0开始

使用名称

在需要设置占位符的地方使用 ':占位名'

设置占位名的值: query.setType("占位名", value);

迫切连接

使用join时,只有在调用多方结果实体的具体属性时才会真正进行查询。

可使用迫切内连接一次性取出所有对象

join后添加fetch关键词

命名的HQL

配置

可在配置文件中定义HQL后再代码中调用

<query name="命名">

<![CDATA[ HQL语句]]>

</query>

调用

Query query = session.getNameQuery("命名");

原文地址:https://www.cnblogs.com/AlMirai/p/12546545.html