hibernate 三种常用的查询方式

来源:互联网 发布:数据库安装在固态硬盘 编辑:程序博客网 时间:2024/05/11 03:22

本文主要学习hibernate的查询方式,HQL

之前的介绍中,我们都是使用get/load方式来查询对象的,这两种方式都是基于OID来查询的,但实际的应用中,我们使用最多的还是基于sql语句的查询,而且HQL是hibernate提供的最强大的查询方式,本文主要简单说一下三种最常见的查询方式。

–在查询语句中设定各种查询条件
–支持投影查询,即仅检索出对象的部分属性
–支持分页查询
–支持连接查询
–支持分组查询,允许使用having和group by关键字
–提供内置聚集函数,如sum()、min()和max()
–支持子查询,即嵌入式查询
–支持动态绑定参数

1、参数化查询,一种是命名参数查询,一种是直接动态绑定查询

@Transactionalpublic List findByParam(String sql, final Object... values) throws Exception {Query queryObject = getSession().createQuery(sql);if (values != null) {for (int i = 0; i < values.length; i++) {queryObject.setParameter(i, values[i]);}}return queryObject.list();}@Transactionalpublic List findByNamedParam(String sql, final String[] paramNames, final Object[] values) throws Exception {Query queryObject = getSession().createQuery(sql);if (values != null) {for (int i = 0; i < values.length; i++) {queryObject.setParameter(paramNames[i], values[i]);}}return queryObject.list();}
2、分页查询

@Transactionalpublic List findByPage(String sql, int FirstResult, int MaxResults) throws Exception {Query queryObject = getSession().createQuery(sql);queryObject.setFirstResult(FirstResult);   queryObject.setMaxResults(MaxResults);return queryObject.list();}
3、投影查询,有关投影查询可以参考另外一篇文章,
hibernate 自定义字段查询映射为pojo对象的新思路



0 0
原创粉丝点击