http://www.blogjava.net/topquan/archive/2006/08/05/61878.html
例如对于TUser类
1.实体查询
String hql = " from TUser";
执行这条语句会返回TUser以及TUser子类的纪录。
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());
}
但是要注意这里的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 基本操作详解 #### 一、HQL简介 HQL,即Hibernate Query Language,是Hibernate...以上是对给定文件中的“hibernate HQL基本操作”的详细解析,希望能够帮助读者更好地理解和掌握HQL的相关知识点。
本文将详细介绍HQL的基本用法及高级特性。 #### 1. 查询所有记录(Select) 使用HQL查询所有记录时,可以通过以下格式来实现: ```java String hql = "from com.mypack.User4"; Query query = session.createQuery...
### Hibernate HQL 基本查询详解 #### 一、HQL 概述 HQL (Hibernate Query Language) 是一种面向对象的查询语言,由 Hibernate 官方提供,用于简化数据库查询过程。与传统的 JDBC 方式相比,使用 HQL 进行数据库...
#### 二、HQL的基本用法 1. **获取Hibernate Session** - 在执行任何HQL查询之前,首先需要通过`SessionFactory`获取一个`Session`实例。 ```java Session session = HibernateUtil.getSessionFactory()....
`where`子句与SQL中的使用方法相同,用于定义查询条件。例如,`select o from Order o where o.id=’1234’`会返回id为'1234'的Order对象。除了`where`子句,HQL还提供了`having`子句,通常用于分组后的过滤,这将在...
### Spring框架中HQL语句的使用方法 在学习Spring框架与Hibernate集成的过程中,掌握HQL(Hibernate Query Language)的使用方法是十分重要的。本文档将详细介绍如何在Spring环境中运用HQL进行数据查询操作,包括...
这两个方法都遵循了上述的HQL使用步骤,通过`createQuery`创建Query对象,然后设置参数并执行查询。在`findPersonByHappenDate`中,还涉及到日期的解析和设置,这是在处理时间相关的查询时常见的做法。 总结来说,...
HQL 的基本语法: * from 子句:在 Hibernate 中实现数据库表中的数据查询。 * select 子句:选择将对象的属性返回到查询结果集中。 * where 子句:允许你将返回的对象的实例列表的范围缩小。 HQL 的应用示例: *...
HQL基本语句 HQL支持类似于SQL的查询结构,如SELECT、FROM、WHERE、GROUP BY、ORDER BY等。以下是一些基本示例: - ** 查询所有实体 **:`from EntityName` - ** 基于条件查询 **:`from EntityName where ...
本文将深入探讨Hibernate的数据查询机制,重点讲解HQL的使用方法。 #### HQL基础 HQL是一种面向对象的查询语言,它支持基本的SQL操作,并在此基础上进行了封装,使其更加符合面向对象的编程风格。HQL查询通常是在...
### HQL基本语法 HQL的语句结构与SQL类似,但对象化了。例如,你可以通过类名而不是表名来查询数据: ```sql SELECT entity FROM ClassName entity WHERE condition ``` 这里的`entity`代表类的实例,`ClassName`...
本文将详细介绍HQL的基本用法及其高级特性,包括Select、Update、Delete等操作。 #### 一、基本查询 HQL支持基本的查询操作,例如: ```java String hql = "from User user"; List<User> list = session....
二、HQL基本结构 1. SELECT子句:HQL支持多种选择项,包括属性、方法、计算表达式等,如“SELECT u.name FROM User u”。 2. FROM子句:指定查询的实体类,如“FROM User”。 3. WHERE子句:设置查询条件,支持...
#### 二、HQL的基本使用流程 使用HQL进行查询主要遵循以下步骤: 1. **获取Hibernate Session对象**:首先需要通过SessionFactory获取到Session实例。 2. **编写HQL语句**:根据查询需求编写合适的HQL查询语句。 3. ...
3. **创建Query对象**:利用Session对象的`createQuery`方法,传入HQL语句创建Query实例。 4. **设置参数**:如果HQL语句中包含参数,需调用Query对象的`setXxx`方法为其赋值。 5. **执行查询并处理结果**:最后...
这些关键字与SQL中的用法类似,但HQL中的对象和属性是基于Java类和它们的成员。 例如,假设我们有一个`Student`类,包含`name`和`age`属性,一个简单的HQL查询可能如下: ```sql SELECT s FROM Student s WHERE s....
除了基本的实体查询之外,HQL还支持更复杂的查询,例如: - **查询所有对象**: ```java hql = "from java.lang.Object"; ``` 这条语句将会返回数据库中所有表的数据记录。然而,由于 Java 的 `java.lang....
HQL支持基本的查询操作,如选择、投影、连接、分组、排序,以及更复杂的子查询和函数调用。通过这个测试程序,我们可以了解到HQL的各种用法,例如: 1. **选择查询**:通过指定类名或别名,HQL可以获取特定实体的...
2. **HQL查询执行**:在方法体内部,首先通过`HibernateUtil.getSession()`获取到一个`Session`实例,这是Hibernate进行数据库操作的基本上下文。接着,使用`session.createQuery(hql)`创建一个`Query`对象,这将HQL...