HQL
## 说明
Hibernate Query language,语法同SQL基本一致,但其中使用的实体类和类的属性,而非表名和表的列名
声明
1 | Query query = session.createQery(String hql); |
查询
list
返回List对象
1 | List<POJO> list = query.list(); |
iterate
返回Iterator对象
1 | Iterator<POJO> it = query.iterate(); |
list和iterate的区别
- list会一次性查询所有结果。
- iterate会一次性查询所有主键,并在调用 iterator.next()时优先查询缓存中该主键对应的记录。
- iterate会更好的利用缓存。
select
选择多个列时,返回List<Object[]>列表
占位符
?
和PreparedStatement一样,可以使用占位符’?’
1 | query.setType(index, value); //index从0开始 |
使用名称
在需要设置占位符的地方使用 ‘:占位名’
1 | query.setType("占位名", value); |
迫切连接
使用join时,只有在调用多方结果实体的具体属性时才会真正进行查询。
可使用迫切内连接一次性取出所有对象
在join后添加fetch关键词
命名的HQL
配置
可在配置文件中定义HQL后再代码中调用
1 | <query name="命名"> |
调用
1 | Query query = session.getNameQuery("命名"); |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 AlMirai!