HQL查询语句精要
需积分: 9 11 浏览量
更新于2024-09-14
收藏 47KB DOC 举报
“hql精点查询语句.doc”
在文档“hql精点查询语句.doc”中,主要探讨了Hibernate Query Language(HQL)的一些关键查询语句和功能。HQL是Hibernate提供的面向对象的查询语言,它允许开发者以类和属性的名字而不是数据库表和列来编写查询,使得SQL操作更加面向对象。
1. from子句
`from Person` 这个语句表示从`Person`持久化类中选择所有的实例。这是HQL的基本查询结构,用于指定要查询的对象。
2. select子句
- `select p.name from Person as p` 选择`Person`类中的`name`属性。
- `select p.name.firstName from Person as p` 获取`Person`类中嵌套属性`name.firstName`。
- `select new list(p.name, p.address) from Person as p` 创建一个包含`name`和`address`的新列表。
- `select new ClassTest(p.name, p.address) from Person as p` 如果`ClassTest`是可构造的,创建一个新的`ClassTest`实例,传入`name`和`address`。
- `select p.name as personName from Person as p` 使用别名`personName`引用`name`属性。
- `select new map(p.name as personName) from Person as p` 创建一个Map,其中键是`personName`,值是`name`。
3. 统计函数查询
- `count(*)` 统计查询结果的记录数,如`select count(*) from Student`计算`Student`类的实例数量。
- `min()` 求最小值,例如`select min(p.age) from Person as p`找出`Person`的最小年龄。
- `max()` 求最大值,如`select max(p.age) from Person as p`找到`Person`的最大年龄。
- `sum()` 求和,例如`select sum(p.age) from Person as p`计算所有`Person`的年龄之和。
- `avg()` 求平均值,如`select avg(s.age) from Student as s`获取`Student`的平均年龄。
4. 字符串处理
- `upper()` 方法可以将字符串转换为大写,如`select upper(s.name) from Student as s`。
5. 去除重复行
`distinct` 关键字用于去除查询结果中的重复项,如`select distinct s.age from Student as s`。
6. 多态查询
- `from Person` 和 `from java.lang.Object o` 表示可以从`Person`类或任何对象类型进行查询,体现HQL的多态特性。
- `from Named as n` 可能是针对具有特定接口或注解的类进行查询。
7. where子句
- `where name like "tom%"` 用于设置查询条件,这里查找名字以"tom"开头的所有`Person`实例。
- 更复杂的条件,如`from Cat cat where cat.mate.name like "kit%"`,可以在关联的对象上设置过滤条件,如`Cat`的伴侣(mate)名字以"kit"开头。
通过这些HQL查询语句,开发者可以高效、灵活地对对象数据进行检索、统计和操作,实现了与数据库的无缝对接,简化了数据库操作。理解并熟练掌握这些语句对于进行基于Hibernate的开发至关重要。
2011-03-09 上传
2008-03-10 上传
2024-10-31 上传
2024-10-31 上传
2024-10-25 上传
2024-10-25 上传
2024-11-05 上传
2024-11-06 上传
奋斗者ing
- 粉丝: 70
- 资源: 53
最新资源
- JHU荣誉单变量微积分课程教案介绍
- Naruto爱好者必备CLI测试应用
- Android应用显示Ignaz-Taschner-Gymnasium取消课程概览
- ASP学生信息档案管理系统毕业设计及完整源码
- Java商城源码解析:酒店管理系统快速开发指南
- 构建可解析文本框:.NET 3.5中实现文本解析与验证
- Java语言打造任天堂红白机模拟器—nes4j解析
- 基于Hadoop和Hive的网络流量分析工具介绍
- Unity实现帝国象棋:从游戏到复刻
- WordPress文档嵌入插件:无需浏览器插件即可上传和显示文档
- Android开源项目精选:优秀项目篇
- 黑色设计商务酷站模板 - 网站构建新选择
- Rollup插件去除JS文件横幅:横扫许可证头
- AngularDart中Hammock服务的使用与REST API集成
- 开源AVR编程器:高效、低成本的微控制器编程解决方案
- Anya Keller 图片组合的开发部署记录