`
myharmony
  • 浏览: 107956 次
  • 性别: Icon_minigender_1
  • 来自: 中山市
社区版块
存档分类
最新评论

HQL 基本用法

阅读更多
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基本操作

    ### Hibernate HQL 基本操作详解 #### 一、HQL简介 HQL,即Hibernate Query Language,是Hibernate...以上是对给定文件中的“hibernate HQL基本操作”的详细解析,希望能够帮助读者更好地理解和掌握HQL的相关知识点。

    hql语句 使用大全

    本文将详细介绍HQL的基本用法及高级特性。 #### 1. 查询所有记录(Select) 使用HQL查询所有记录时,可以通过以下格式来实现: ```java String hql = "from com.mypack.User4"; Query query = session.createQuery...

    hibernateHQL基本查询

    ### Hibernate HQL 基本查询详解 #### 一、HQL 概述 HQL (Hibernate Query Language) 是一种面向对象的查询语言,由 Hibernate 官方提供,用于简化数据库查询过程。与传统的 JDBC 方式相比,使用 HQL 进行数据库...

    HQL语句大全HQL语句大全

    #### 二、HQL的基本用法 1. **获取Hibernate Session** - 在执行任何HQL查询之前,首先需要通过`SessionFactory`获取一个`Session`实例。 ```java Session session = HibernateUtil.getSessionFactory()....

    HQL语句的用法

    `where`子句与SQL中的使用方法相同,用于定义查询条件。例如,`select o from Order o where o.id=’1234’`会返回id为'1234'的Order对象。除了`where`子句,HQL还提供了`having`子句,通常用于分组后的过滤,这将在...

    Spring中hql语句的常用方法

    ### Spring框架中HQL语句的使用方法 在学习Spring框架与Hibernate集成的过程中,掌握HQL(Hibernate Query Language)的使用方法是十分重要的。本文档将详细介绍如何在Spring环境中运用HQL进行数据查询操作,包括...

    HQL语法入门学习HQL语法入门学习

    这两个方法都遵循了上述的HQL使用步骤,通过`createQuery`创建Query对象,然后设置参数并执行查询。在`findPersonByHappenDate`中,还涉及到日期的解析和设置,这是在处理时间相关的查询时常见的做法。 总结来说,...

    Hibernate查询语言HQL.PPT

    HQL 的基本语法: * from 子句:在 Hibernate 中实现数据库表中的数据查询。 * select 子句:选择将对象的属性返回到查询结果集中。 * where 子句:允许你将返回的对象的实例列表的范围缩小。 HQL 的应用示例: *...

    hql基础语句

    HQL基本语句 HQL支持类似于SQL的查询结构,如SELECT、FROM、WHERE、GROUP BY、ORDER BY等。以下是一些基本示例: - ** 查询所有实体 **:`from EntityName` - ** 基于条件查询 **:`from EntityName where ...

    Hibernate教程(数据查询)HQL,PDF格式

    本文将深入探讨Hibernate的数据查询机制,重点讲解HQL的使用方法。 #### HQL基础 HQL是一种面向对象的查询语言,它支持基本的SQL操作,并在此基础上进行了封装,使其更加符合面向对象的编程风格。HQL查询通常是在...

    HQL详解

    ### HQL基本语法 HQL的语句结构与SQL类似,但对象化了。例如,你可以通过类名而不是表名来查询数据: ```sql SELECT entity FROM ClassName entity WHERE condition ``` 这里的`entity`代表类的实例,`ClassName`...

    HQL语句详解Select/update/deletefromwhere...

    本文将详细介绍HQL的基本用法及其高级特性,包括Select、Update、Delete等操作。 #### 一、基本查询 HQL支持基本的查询操作,例如: ```java String hql = "from User user"; List&lt;User&gt; list = session....

    Hibernate-HQL.rar_HQL_hibernate hql

    二、HQL基本结构 1. SELECT子句:HQL支持多种选择项,包括属性、方法、计算表达式等,如“SELECT u.name FROM User u”。 2. FROM子句:指定查询的实体类,如“FROM User”。 3. WHERE子句:设置查询条件,支持...

    HQL语法大全,并带有详细的例子

    #### 二、HQL的基本使用流程 使用HQL进行查询主要遵循以下步骤: 1. **获取Hibernate Session对象**:首先需要通过SessionFactory获取到Session实例。 2. **编写HQL语句**:根据查询需求编写合适的HQL查询语句。 3. ...

    HQL查询及语法

    3. **创建Query对象**:利用Session对象的`createQuery`方法,传入HQL语句创建Query实例。 4. **设置参数**:如果HQL语句中包含参数,需调用Query对象的`setXxx`方法为其赋值。 5. **执行查询并处理结果**:最后...

    Hibernate之HQL查询

    这些关键字与SQL中的用法类似,但HQL中的对象和属性是基于Java类和它们的成员。 例如,假设我们有一个`Student`类,包含`name`和`age`属性,一个简单的HQL查询可能如下: ```sql SELECT s FROM Student s WHERE s....

    HQL 语法总结 实体查询

    除了基本的实体查询之外,HQL还支持更复杂的查询,例如: - **查询所有对象**: ```java hql = "from java.lang.Object"; ``` 这条语句将会返回数据库中所有表的数据记录。然而,由于 Java 的 `java.lang....

    HibernateHql综合测试小程序

    HQL支持基本的查询操作,如选择、投影、连接、分组、排序,以及更复杂的子查询和函数调用。通过这个测试程序,我们可以了解到HQL的各种用法,例如: 1. **选择查询**:通过指定类名或别名,HQL可以获取特定实体的...

    hql总条数.txt

    2. **HQL查询执行**:在方法体内部,首先通过`HibernateUtil.getSession()`获取到一个`Session`实例,这是Hibernate进行数据库操作的基本上下文。接着,使用`session.createQuery(hql)`创建一个`Query`对象,这将HQL...

Global site tag (gtag.js) - Google Analytics