【HIBERNATE框架开发之八】HIBERNATE 查询语言QUERY LANGUAGE(HQL)

简介:
本站文章均为  李华明Himi 原创,转载务必在明显处注明: 
转载自【黑米GameDev街区】 原文链接:  http://www.himigame.com/hibernate/824.html

    生成一条HQL查询语句  Query,  使用Session的createQuery(“hql语句”)生成Query

HQL语句:

1. “from className”

class是类名;Hibernate会自动到数据库中找对应生成的表;

 

2.“from className cn where cn.name > ‘xx’”

cn 是className的别名,  ‘xx’表示条件

 

3. “from ClassName cn order by cn.name desc”

按照className的名字倒序排列

 

4. “select distinct cn from ClassName cn order by cn.name desc”

互相之间不会重复的对象(主键不同)的按照倒序排列

 

5. “from ClassName cn where cn.id > :min and cn.id< :max”

然后设置其Parameter(min和max)   :

query.setParameter(“min”, 2);           query.setParameter(“max”, 8);

query.setInteger(“min”, 2);                  query.setInteger(“max”, 8);

(两段实现相同功能,使用setParameter则自动转换类型,下面属于手动转换类型);

 

6.”select cn.id,cn.name from ClassName cn order by cn.name desc”

取出特定的两个字段 id 和 name

 

7. “from ClassName cn where cn.group.id =1 ”

找到在ClassName生成的表中中的group对象的id为1的那个ClassName对象

 

8.  “select cn.id,g.name from ClassName cn Join cn.group g”

映射ClassName的cn.id对应ClassName中group对象里的name属性;join 建立导航关系

 

9.  “select count(*) from ClassName cn”

使用聚合函数, 注意count(*)返回Long类型;

 

10. “select max(cn.id), min(cn.id), avg(cn.id), sum(cn.id) from ClassName cn”

聚合函数

 

11. “from ClassName cn where cn.id between 3 and 7”

两者之间

 

12. “from ClassName cn where cn.id in (3,4,5)”

是否在其中

 

13. “from ClassName cn where cn.name is not null”

不为null

 

14.   “from ClassName cn where cn.set is empty”

判断集合属性是否为空

is not empty 测试某一个属性是否为空

 

15.  “from ClassName cn where cn.name like ‘%4′”

“from ClassName cn where cn.name like ‘_4′”

%: 表示0个或者多个

_:表示一个

 

16.”select lower(cn.name),lower(cn.name),upper(cn.name),trim(cn.name),concat(cn.name),length(cn.name) from ClassName cn”

一些常用函数

 

17. “select abs(cn.id),sqrt(cn.id) from ClassName cn”

一些函数

 

18. “select current_date,current_time,current_timestamp,t.id from ClassName t”

时间日期

 

19. “from ClassName cn where cn.createDate < :date”

日期的比较

 

20. “select cn.name,count(*) from ClassName cn group by cn.name”

.分组查询

 

21. “select cn.name,count(*) from ClassName cn group by cn.name having count(*) >= 2”

.

22. “from ClassName cn where cn.id < (select avg(cn.id) from ClassName cn)”

哪个id值<平均值

 

23. “from ClassName cn where cn.id < ALL(select cn.id from ClassName cn where mod(cn.id ,2) = 0)”

id 小于ALL(2,4,6,8)所有值   ps..小于最小值 =   select min

 

24. “update ClassName cn set cn.name = upper(cn.name)”

更新

 

Query函数:

1. Query 中 有个 list()函数,直接获取其数据返回一个list对象;

2. Query 中uniqueResult()函数,得到唯一返回的值;

3. executeUpdate() 更新

 


相关文章
|
2月前
|
API Java 数据库连接
从平凡到卓越:Hibernate Criteria API 让你的数据库查询瞬间高大上,彻底告别复杂SQL!
【8月更文挑战第31天】构建复杂查询是数据库应用开发中的常见需求。Hibernate 的 Criteria API 以其强大和灵活的特点,允许开发者以面向对象的方式构建查询逻辑,同时具备 SQL 的表达力。本文将介绍 Criteria API 的基本用法并通过示例展示其实际应用。此 API 通过 API 构建查询条件而非直接编写查询语句,提高了代码的可读性和安全性。无论是简单的条件过滤还是复杂的分页和连接查询,Criteria API 均能胜任,有助于提升开发效率和应用的健壮性。
62 0
|
2月前
|
数据库 Java 数据库连接
Struts 2 与 Hibernate 的完美邂逅:如何无缝集成两大框架,轻松玩转高效 CRUD 操作?
【8月更文挑战第31天】本文通过具体示例介绍了如何在 Struts 2 中整合 Hibernate,实现基本的 CRUD 操作。首先创建 Maven 项目并添加相关依赖,接着配置 Hibernate 并定义实体类及其映射文件。然后创建 DAO 接口及实现类处理数据库操作,再通过 Struts 2 的 Action 类处理用户请求。最后配置 `struts.xml` 文件并创建 JSP 页面展示用户列表及编辑表单。此示例展示了如何配置和使用这两个框架,使代码更加模块化和可维护。
41 0
|
2月前
|
SQL Java 数据库连接
|
2月前
|
缓存 Java 数据库连接
什么是 Hibernate 查询语言或 HQL?
【8月更文挑战第21天】
68 0
|
2月前
|
SQL Java 数据库连接
在 Hibernate 中何时使用条件查询?
【8月更文挑战第21天】
28 0
|
5月前
|
SQL 缓存 Java
框架分析(9)-Hibernate
框架分析(9)-Hibernate
|
2月前
|
SQL Java 数据库连接
Hibernate 是一款开源 ORM(对象关系映射)框架,封装了 JDBC,允许以面向对象的方式操作数据库,简化了数据访问层的开发。
Hibernate 是一款开源 ORM(对象关系映射)框架,封装了 JDBC,允许以面向对象的方式操作数据库,简化了数据访问层的开发。通过映射机制,它可以自动处理对象与数据库表之间的转换,支持主流数据库,提高了代码的可移植性和可维护性。其核心接口包括 SessionFactory、Session 和 Transaction 等,通过它们可以执行数据库的 CRUD 操作。配置方面,需在项目中引入 Hibernate 及数据库驱动依赖,并创建 `hibernate.cfg.xml` 配置文件来设置数据库连接和 Hibernate 行为参数。
37 1
|
3月前
|
SQL Java 数据库连接
Java面试题:简述ORM框架(如Hibernate、MyBatis)的工作原理及其优缺点。
Java面试题:简述ORM框架(如Hibernate、MyBatis)的工作原理及其优缺点。
50 0
|
4月前
|
Java 数据库连接 数据库
探索JPA生态:Hibernate与其他ORM框架的对比分析
【6月更文挑战第25天】**JPA标准下的Hibernate是流行的ORM实现,提供丰富功能如二级缓存和延迟加载,但其学习曲线较陡,性能优化复杂。相比如MyBatis,Hibernate的JPQL更面向对象,MyBatis则接近SQL。选择ORM需考虑项目需求和个人偏好。**
63 0
|
4月前
|
Java 数据库连接
杨老师课堂之JavaEE三大框架Hibernate入门第一课
杨老师课堂之JavaEE三大框架Hibernate入门第一课
26 0