本文主要学习hibernate的查询方式,HQL
之前的介绍中,我们都是使用get/load方式来查询对象的,这两种方式都是基于OID来查询的,但实际的应用中,我们使用最多的还是基于sql语句的查询,而且HQL是hibernate提供的最强大的查询方式,本文主要简单说一下三种最常见的查询方式。
–在查询语句中设定各种查询条件
–支持投影查询,即仅检索出对象的部分属性
–支持分页查询
–支持连接查询
–支持分组查询,允许使用having和group by关键字
–提供内置聚集函数,如sum()、min()和max()
–支持子查询,即嵌入式查询
–支持动态绑定参数
1、参数化查询,一种是命名参数查询,一种是直接动态绑定查询
@Transactional
public 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();
}
@Transactional
public 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、分页查询
@Transactional
public 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对象的新思路
本文介绍了Hibernate查询语言(HQL)的基本用法,包括参数化查询、分页查询和投影查询等常见场景。通过示例展示了如何利用HQL进行高效的数据检索。
3696

被折叠的 条评论
为什么被折叠?



