`
yianpuodiaotu
  • 浏览: 241693 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

HQL 语言基本用法

    博客分类:
  • JEE
阅读更多

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

分享到:
评论

相关推荐

    hql语言中的一些常用的方法

    ### HQL语言中的一些常用的方法 HQL(Hibernate Query Language)是Hibernate框架提供的一种查询语言,它基于SQL标准,但更加强调面向对象的特点。在实际应用开发中,HQL被广泛用于数据检索、更新等操作。下面将...

    HQL语言大全 跳楼分值

    **HQL语言大全** HQL(Hibernate Query Language)是Hibernate框架中的对象关系映射查询语言,它是对SQL的面向对象的封装,使得开发者可以使用面向对象的方式来查询数据库。HQL的强大在于它允许开发者以类和对象的...

    Hibernate查询语言HQL.PPT

    3. 使用 HQL 检索对象:使用 Hibernate 查询语言 HQL 检索对象。 4. 使用 Hibernate 条件 API:提供了类型安全的面向对象的方式执行查询。 5. 使用本地 SQL 查询:Hibernate 只关心把 JDBC 结果集映射到持久对象图。...

    hql语句 使用大全

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

    HQL语句的用法

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

    hibernate hql基本操作

    此外,在使用`scroll()`或`iterate()`方法时,`fetch`连接是不可用的。 #### 六、Fetch策略 - **Fetch策略**:使用`fetch all properties`可以在第一次查询时立即加载原本需要懒加载的属性。例如`from Document ...

    HQL语句大全HQL语句大全

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

    hql查询语言语法

    HQL(Hibernate Query Language)是一种专为Hibernate设计的面向对象的查询语言,它允许开发者使用类名和属性名来进行数据库查询,而无需直接操作SQL语句。这不仅提高了代码的可读性和可维护性,还使得开发工作更加...

    hibernateHQL基本查询

    HQL (Hibernate Query Language) 是一种面向对象的查询语言,由 Hibernate 官方提供,用于简化数据库查询过程。与传统的 JDBC 方式相比,使用 HQL 进行数据库查询更加便捷、高效且易于维护。 #### 二、HQL 与 SQL ...

    HQL查询语言基础!

    在本文中,我们将深入探讨HQL的基本用法,包括单表查询、多表查询以及不同类型的连接(join)。 1. **单表查询** - 在HQL中,`from`关键字用于指定查询的实体。例如,`from eg.cat as cat`表示查询名为`Cat`的实体...

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

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

    Hibernate查询语言(HQL)

    注意,FETCH 通常与 ITERATE 方法结合使用,而不是 SCROLL 或其他方法,因为 SCROLL 等方法可能不支持懒加载。 #### 六、显式与隐式 JOIN - **显式 JOIN**:使用显式 JOIN 形式时,需要明确地指定 JOIN 关键字。 ...

    hibernate查询语言hql

    在本篇文章中,我们将深入探讨HQL的基础知识、语法特性以及一些高级用法。 ### HQL基础 1. **基本查询语句**: HQL的基本查询结构与SQL类似,包括`SELECT`, `FROM`, `WHERE`子句。例如,查询所有`User`对象: ``...

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

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

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

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

    HQL 语法总结 实体查询

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

    hql基础语句

    HQL(Hibernate Query Language)是Hibernate框架中用于...以上内容涵盖了HQL的基础用法,包括ID生成策略、基本查询语句、集合参数传递和不同的传参方式。通过这些知识点,你可以更有效地使用Hibernate进行数据库操作。

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

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

Global site tag (gtag.js) - Google Analytics