例如对于TUser类
1.实体查询
String hql =
" from TUser";
执行这条语句会返回TUser以及TUser子类的纪录。
注: 如果 TUser 类具有外键, 查询会报错!
解决方法: select 别名.属性 from 类 as 别名.
没有别名.属性仍然报错!
hql =
"from java.lang.Object"
会返回数据库中所有库表的纪录。
where 语句
hql = "from TUser as user where
user.name='yyy'";
其中,as可以省略也一样
hql = "from TUser user where
user.name='yyy'";
where子句中,我们可以通过比较运算符设定条件,如:
=, <>,
>, <, >=, <=, between, not between, in, not in, is,
like等。
2.属性查询
List list =
session.createQuery("select user.name, user.age from TUser as
user").list();
还可以在HQL中动态构造对象实例的方法,将数据封装。
List list =
session.createQuery("select new TUser(user.name, user.age) from TUser as
user").list();
Iterator it = list.iterator();
while(it.hasNext() )
{
TUser user =
(TUser)it.next();
System.out.println(user.getName());
}
如果传入参数类似于sum(amount)这样的属性值,如果amount在数据库中是Double,那么业务实体类也要对应是Double类型
但是要注意这里的TUser对象只是对name和age属性的封装,其他状态均未赋值,所以不能用它来进行更新操作。
也可以在HQL的Select子句中使用统计函数
"select count(*) ,min(user.age) from TUser as
user"
也可以使用distinct关键字来删除重复纪录。
select distinct user.name from TUser as
user;
3.实体的更新与删除
hibernate 2中需要先查询出实体,设置属性后再保存。
hibernate
3中,提供了更灵活的方式(bulk delete/update)
更新:
Query query
= session.createQuery("update TUser set age=18 where
id=1");
query.executeUpdate();
删除:
session.createQuery("delete TUser where
age>=18");
query.executeUpdate();
4.分组与排序
Order by子句:
from TUser user order by user.name, user.age desc
Group
by子句和Having子句
"select count(user), user.age from
TUser user group by user.age having
count(user)>10"
5.参数邦定
通过顺序占位符?来填充参数:
1)hibernate 2
中通过session.find方法来填充
session.find("from TUser user where user.name=?", "Erica",
Hibernate.STRING);
多个参数的情况:
Object[] args = new
Object[] {"Erica", new
Integer(20)};
Type[] types = new
Type{Hibernate.STRING,
Hibernate.INTEGER};
session.find("from TUser user where user.name=? and user.age=?", args,
types);
2)通过Query接口进行参数填充:
Query query = session.createQuery("from TUser user where user.name=? and
user.age>?");
query.setString(0,"Erica");
query.setInteger(1,
20);
通过引用占位符来填充参数:
String hql = "from TUser where
name=:name";
Query query =
session.createQuery(hql);
query.setParameter("name","Erica");
甚至可以将查询条件封装为一个JavaBean
class
UserQuery {
private String
name;
private Integer
age;
//getter and setter
}
String hql = "from
TUser where name=:name and age=:age";
Query query =
session.createQuery(hql);
UserQuery uq = new
UserQuery();
uq.setName("Erica");
uq.setAge(new
Integer(20));
query.setProperties(uq);
//会调用里面的getter?
query.iterate();
6.联合查询
也可以使用 inner join,left outer
join, right out join, full join
排列组合:form TUser,
TAddress
分享到:
相关推荐
《Hibernate HQL查询语法详解》 Hibernate,作为Java领域中广泛应用的对象关系映射(ORM)框架,极大地简化了数据库操作。其内置的HQL(Hibernate Query Language)是一种面向对象的查询语言,它允许开发者以类和...
### HQL语法详解及其应用案例 #### 一、HQL简介 HQL(Hibernate Query Language)是一种面向对象的查询语言,被广泛应用于Hibernate框架中,用于执行数据持久化操作。与传统的SQL相比,HQL更加面向对象,支持诸如...
### Hibernate_HQL大全详解 #### 一、HQL概述 HQL,即Hibernate Query Language,是一种强大且面向对象的查询语言,由Hibernate框架提供。尽管HQL的语法结构与SQL相似,但其设计理念完全不同,HQL是专门为面向对象...
2. **编写HQL语句**:HQL的语法类似于SQL,但更注重对象。例如,`from Person p where p.myEvents.title = :eventTitle`这样的查询语句会找出所有`myEvents`标题为`eventTitle`的`Person`对象。 3. **创建Query对象*...
### HQL语句语法详解 HQL(Hibernate Query Language)是一种面向对象的查询语言,它提供了灵活而强大的机制来查询数据库中的数据,并将其映射到Java对象上。本篇文章将根据给定的信息深入探讨HQL的基本语法结构...
### Hibernate HQL 关联查询详解 #### 一、引言 在进行数据库操作时,关联查询是必不可少的一部分,尤其在处理复杂的数据结构时更是如此。Hibernate作为一种流行的Java持久层框架,提供了强大的对象关系映射(ORM...
这里使用了HQL(Hibernate Query Language)来执行查询。例如,在`getProductsMenuSub`方法中,通过以下HQL语句实现了连表查询: ```java String queryString = "select a.productsName from TopProducts as a, ...
#### HQL语法概览 HQL的完整语法结构包括以下几个关键部分:`select`, `update`, `delete`, `from`, `where`, `group by`, `having`, `order by`。值得注意的是,`update` 和 `delete` 操作是在Hibernate 3版本中...
这条语句使用HQL语法查询了所有的`User`对象。`find`方法是`Session`接口的一个快捷方法,用于执行HQL查询。这里,查询字符串"from User"告诉Hibernate检索`User`类的所有实例。 #### HQL查询的灵活性 HQL不仅支持...
### HQL语法总结:实体查询详解 #### 一、实体查询概述 HQL(Hibernate Query Language)是一种面向对象的查询语言,它允许开发者以一种类似于SQL但更接近于面向对象的方式来编写查询。本文将详细介绍HQL中的实体...
### HQL查询及语法详解 #### 一、HQL简介 HQL,全称为Hibernate Query Language,是Hibernate框架提供的一种面向对象的查询语言。它基于SQL标准,但更加强调对象模型,支持Java中的对象关系映射(ORM),能够处理...
总的来说,"HibernateHql综合测试小程序"是一个实用的学习和调试工具,它可以帮助开发者熟悉并精通HQL的语法和用法。通过实际操作和测试,开发者可以更深刻地理解Hibernate的查询机制,提升开发效率,为项目开发打下...
Hibernate Query Language(HQL)是Hibernate框架中的对象关系映射查询语言,它允许开发者以面向对象的方式书写查询,而无需关心底层数据库的SQL语法。HQL是SQL的一个面向对象的版本,提供了更为简洁且强大的查询...
### HQL查询语法详解 #### 1. 连接查询 HQL中的连接查询可以通过`JOIN`关键字实现。例如,假设有一个`Order`实体类和一个`Product`实体类,它们之间存在多对多关系,那么可以这样写: ```hql FROM Order AS o ...
在探讨HQL(Hibernate Query Language)时,我们首先要了解它是一种用于Hibernate框架中的查询语言,其语法结构与标准SQL查询语言非常相似,但又针对对象关系映射(ORM)进行了优化。本文将详细介绍HQL的基本用法...
### Hibernate HQL 基本查询详解 #### 一、HQL 概述 HQL (Hibernate Query Language) 是一种面向对象的查询语言,由 Hibernate 官方提供,用于简化数据库查询过程。与传统的 JDBC 方式相比,使用 HQL 进行数据库...
### Hibernate HQL 基本操作详解 #### 一、HQL简介 HQL,即Hibernate Query Language,是Hibernate提供的一种强大的查询语言。虽然它的语法结构看起来与SQL类似,但其实质上是一种面向对象的语言,能够理解并处理...
### HQL文档详解 #### 一、HQL简介与特点 HQL(Hibernate Query Language)是Hibernate提供的查询语言,它提供了丰富的查询功能。HQL作为推荐的标准查询方式,在HQL查询过程中,它不仅支持标准SQL查询语法,还提供...