`
peihong-ph
  • 浏览: 22654 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

HQL语句

阅读更多
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());
}
但是要注意这里的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
分享到:
评论

相关推荐

    全面解析HQL语句 非常详细直接的HQL语句的功能介绍

    标题:“全面解析HQL语句 非常详细直接的HQL语句的功能介绍” 描述:“非常详细直接实用的HQL语句的功能介绍看过的人保准都说好” 本篇文章将深入探讨HQL(Hibernate Query Language)的核心功能及其在数据查询...

    HQL语句 HQL语句

    HQL语句 HQL语句 HQL语句 HQL语句 HQL语句

    HQL语句大全HQL语句大全

    ### HQL语句详解 #### 一、HQL简介 HQL(Hibernate Query Language)是Hibernate框架中的查询语言,它提供了面向对象的方式来进行数据库查询。HQL语法接近于SQL但又有所不同,它允许开发者以面向对象的方式来表达...

    hibernate-HQL语句大全

    hibernate-HQL语句大全

    HQL语句的语法

    HQL语句的语法结构与SQL相似,但更注重对象和类的概念。以下将详细介绍HQL语句的几个关键部分: 1. **from 子句**:这是HQL查询的起点,用于指定要查询的持久化类。例如,`from Person as p`表示从`Person`类中选择...

    hql语句大全hql语句大全

    ### HQL语句详解:精通Hibernate查询语言 #### 引言 HQL(Hibernate Query Language)是Hibernate框架中用于执行数据库操作的一种强大的查询语言。它提供了面向对象的语法,允许开发人员以一种接近于编程语言的方式...

    常用的hql语句用法解析

    本文将深入解析HQL语句的常见用法。 1. 大小写敏感性 HQL对Java类和属性的名称是大小写敏感的,但在关键字和表名方面,除了类名和属性名之外,HQL不区分大小写。因此,`SeLeCT`、`sELEct`和`SELECT`被视为相同,但`...

    Hibernate框架]Hql语句in中带参数的写法

    Hibernate框架Hql语句in中带参数的写法 Hibernate框架中,在使用HQL语句时,需要传递参数,而在HQL语句中使用in关键字时,需要特别注意参数的传递方式。在本文中,我们将讨论如何在HQL语句中使用in关键字带参数的...

    hql语句语法详解hql语句

    ### HQL语句语法详解 HQL(Hibernate Query Language)是一种面向对象的查询语言,它提供了灵活而强大的机制来查询数据库中的数据,并将其映射到Java对象上。本篇文章将根据给定的信息深入探讨HQL的基本语法结构...

    常用的HQL语句下载

    以下是一些常用HQL语句的使用与说明: 1. **HQL更新语句**: 更新操作允许您修改数据库中的对象属性。在示例中,第4行的HQL语句`update PhUser set realName=?`用于更新`PhUser`表中所有记录的`realName`字段。第5...

    Hibernate中HQL语句的使用[参考].pdf

    Hibernate中HQL语句的使用 HQL(Hibernate Query Language)是 Hibernate 框架中的一种查询语言,它允许开发者使用面向对象的方式来查询数据库。HQL语句的使用是Hibernate中最重要的部分之一,本文将详细介绍HQL...

    HQL语句查询

    HQL语句查询

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

    ### HQL语句详解:Select/update/delete from where... 在探讨HQL(Hibernate Query Language)时,我们首先要了解它是一种用于Hibernate框架中的查询语言,其语法结构与标准SQL查询语言非常相似,但又针对对象关系...

    最新HQL语句实例代码

    常见HQL语句的示例包括输出结果,以及语句的分析总结

    HQL语句(结合实例).doc

    HQL语句(结合实例).doc HQL语句(结合实例).doc HQL语句(结合实例).doc

    hql语句 使用大全

    ### HQL语句使用大全 HQL(Hibernate Query Language)是一种面向对象的查询语言,它提供了灵活而强大的数据检索方式,使开发人员能够更高效地与数据库交互。本文将详细介绍HQL的基本用法及高级特性。 #### 1. ...

    HQL语句函数汇总(汇集了hql语句中大部分常用的函数)

    汇集了hql语句中大部分常用的函数 ABS(n) 取绝对值数学函数 数学函数 JPAQL HQL ABS(column_name[数字类型对象属性])

    Hibernate-HQL语句多对多写法

    "Hibernate-HQL语句多对多写法" Hibernate 是一个流行的 Java 持久层框架,它提供了强大的对象关系映射(ORM)功能,使得开发者可以方便地与数据库交互。但是,在使用 Hibernate 时,我们经常会遇到多对多关系的...

Global site tag (gtag.js) - Google Analytics