`

(HQL)hibernate查询语言

 
阅读更多
来源:http://www.blogjava.net/focusJ/archive/2011/04/22/367245.html
HQL实例:

1. 查询表中的所有记录:from Category

2. 带有where子句的条件查询:from Category c where c.name > 'c5'

3. 结果根据某一字段排序:from Category c order by c.name desc(desc表示降序排列,asc表示升序排列)

4. 去除重复记录获得单一记录:select distinct c from Category c order by c.name desc

5. 带有参数的查询:from Category c where c.id > :min and c.id < :max。hql语句中’:min’ 表示的是参数,可以像jdbc中一样,为参数赋值。在hql中可以这样,这里也运用了链式编程:

session.createQuery("from Category c where c.id > :min and c.id < :max")

.setInteger("min", 2)

.setInteger("max",;

6. 带参数hql查询的另外一种查询:from Category c where c.id > ? and c.id < ?

7. hibernate分页查询

Query q = session.createQuery("from Category c order by c.name desc");

q.setMaxResults(3);

q.setFirstResult(0);

其中setMaxResult()是设置每页的最大显示量,setFirstResult()是设置其实元素从哪里开始,这里0代表最后一条元素。

8. 多表连接查询:select t.title, c.name from Topic t join t.category c

9. HQL函数:

a) Count():select count(*) from Msg m

b) Max()-min()-avg():select max(m.id), min(m.id), avg(m.id), sum(m.id) from Msg m

c) Between:from Msg m where m.id between 3 and 5

d) In:from Msg m where m.id in (3, 4, 5)

10. Is null;is not null:from Msg m where m.cont is not null

11. Is empty:from Topic t where t.msgs is empty

12. Like:from Topic t where t.title like '%5'。'%'匹配所有字符,'_'匹配单个字符。

13.

一些功能函数,但是不重要了解即可:select lower(t.title)," +

"upper(t.title)," +

"trim(t.title)," +

"concat(t.title, '***')," +

"length(t.title)" +

    " from Topic t ")

Trim()是去掉首尾空格,返回字符串的副本,concat()将字符串欲查询出的字符串连接。

14. Abs()-sqrt()-mod():select abs(t.id)," + "sqrt(t.id)," + "mod(t.id,2)" + " from Topic t

15. 获取当前的时间:select current_date, current_time, current_timestamp, t.id from Topic t

16. Having子句:select t.title, count(*) from Topic t group by t.title having count(*) <= 1

17. Exist:from Topic t where not exists (select m.id from Msg m where m.topic.id=t.id)

需要注意的一点:in同样可以实现exist的功能,但是exist的执行效率较高。

18. Update的用法:update Topic t set t.title = upper(t.title)

19. hql删除的三种方式:

Hibernate的删除方式:

/*方式一*/
String hql = "select p from Province as p where p.id=?";
Query query = session.createQuery(hql);
query.setString(0, id);
Province p = (Province)query.list().get(0);
session.delete(p);
/*方式二*/
String hql = "delete Province where id=?";
Query query = session.createQuery(hql);
query.setString(0, id);
int x = query.executeUpdate();
if(x>0){
  flag = true;
}
/*方式三*/
Province p = (Province)session.get(Province.class, id);
session.delete(p);

方式一相对比较笨重。

方式二中的Hql语句不要加as + 别名!

方式三是Hibernate自带的方法。

20. 查询表中的某些字段:

方法一:给这个类新建一个构造方法,传进去你想要的参数,然后hql语句可以这样写:

select new Class(c.name, c.date, c.sex) from Class

方法二:用JDBC的sql语句:

Session.createSQLQuery(sql);
分享到:
评论

相关推荐

    HQL Hibernate查询语言

    HQL Hibernate查询语言,HQL的学习和参考的文档,开发必备。

    Hibernate查询语言HQL.PPT

    Hibernate 查询语言 HQL Hibernate 查询语言 HQL 是一种面向对象的查询语言,用于检索对象。它提供了灵活多样的查询机制,包括导航对象图、通过标识符检索、使用 HQL 检索对象、使用 Hibernate 条件 API 和使用本地...

    Hibernate查询语言HQL

    Hibernate查询语言HQL

    hibernateHQL关联查询

    其中,HQL(Hibernate Query Language)作为Hibernate提供的查询语言之一,允许开发者以接近面向对象的方式编写查询语句。本文将重点介绍Hibernate中的关联查询,并深入探讨HQL关联查询的实现原理及应用场景。 ####...

    hibernate查询语言--HQL

    以上就是关于Hibernate查询语言HQL的详解,包括了从简单属性查询到实体对象查询,再到条件查询、原生SQL查询和外置命名查询的使用。通过学习和实践,开发者可以更加熟练地运用Hibernate进行数据库操作。

    HQL是hibernate自己的一套查询

    根据提供的标题、描述以及部分代码内容,我们可以了解到这段材料主要涉及的是Hibernate框架中的HQL(Hibernate Query Language)查询语言的使用。接下来将详细介绍HQL的相关知识点。 ### HQL概述 HQL是Hibernate...

    hibernate查询语言hql

    Hibernate查询语言(HQL)是Java开发者用于操作Hibernate ORM框架中的对象关系映射数据的一种强大的查询工具。HQL是面向对象的,它允许开发者用类名和属性而不是表名和列名来编写查询,极大地提高了代码的可读性和可...

    Hibernate查询语言(HQL)

    ### Hibernate 查询语言 (HQL) #### 一、简介 Hibernate 查询语言(HQL)是一种功能强大的查询语言,它与 SQL 在语法上有一定的相似性,但 HQL 被设计成面向对象的语言,能够理解诸如继承、多态和关联等概念。这种...

    Hibernate查询语言(HQL) 语法参考

    Hibernate 查询语言(HQL)语法参考 HQL(Hibernate Query Language)是 Hibernate 框架中的一种强大的查询语言,它类似于 SQL 语句,但是它是完全面向对象的查询语言,可以理解继承、多态和关联等概念。 大小写...

    hibernate 查询?Hibernate的HQL查询

    【描述】:在ORM框架Hibernate中,数据查询和检索是一个核心功能,它提供了多种查询方式,包括标准化对象查询(Criteria Query)、Hibernate查询语言(HQL)和原生SQL查询。其中,HQL作为官方推荐的查询方式,具有...

    Hibernate hql查询语法总结

    其内置的HQL(Hibernate Query Language)是一种面向对象的查询语言,它允许开发者以类和对象的方式进行数据查询。本文将对Hibernate HQL查询语法进行总结,涵盖基础查询、属性查询、实例化查询以及查询链接等多个...

    精通hibernate HQL语言

    HQL,全称Hibernate Query Language,是Hibernate框架提供的一种面向对象的查询语言,它的语法结构与SQL相似,但主要针对对象和实体进行操作,而不是直接操作数据库表。HQL是Hibernate官方推荐的检索数据的主要方式...

    Hibernate-HQL.rar_HQL_hibernate hql

    本篇文档将深入探讨Hibernate中的HQL(Hibernate Query Language),一种面向对象的查询语言,它提供了与SQL类似的语法,但更贴近于面向对象的思维模式,使得开发者可以更加便捷地进行数据查询。 一、HQL简介 HQL是...

    HQL查询语言基础知识

    HQL 查询语言基础知识是 Hibernate 中的基础组件之一,对于开发人员来说,掌握 HQL 查询语言是必不可少的。 1.单表查询 HQL 中的单表查询使用 FROM 语句,例如:FROM eg.Cat as cat,其中 cat 只是一个别名,为了...

    Hibernate-HQL-查询-Query资料

    在Hibernate中,HQL(Hibernate Query Language)是专为ORM设计的一种面向对象的查询语言,它允许开发者以类和对象的方式进行数据查询,而不是直接使用SQL。本资料主要涵盖了Hibernate HQL查询的基本概念、语法以及...

    Hibernate HQL查询 分页查询 模糊查询.docx

    HQL(Hibernate Query Language)是一种面向对象的查询语言,它允许开发者使用类及其属性来编写查询语句,而不是传统的SQL语句。这使得开发人员能够更加专注于业务逻辑而不用深入到SQL层面。HQL支持各种复杂的查询,...

    Hibernate查询语言.doc

    Hibernate查询语言,作为Java开发中持久化框架的重要组成部分,提供了丰富的查询机制,使得开发者能够方便地操作数据库。本文主要探讨Hibernate中的查询语言,包括面向对象的查询语言HQL,QueryBy Criteria (QBC),...

Global site tag (gtag.js) - Google Analytics