Hibernate HQL查询详解:模糊查询与对象关系映射
需积分: 10 64 浏览量
更新于2024-08-17
收藏 135KB PPT 举报
该资源主要介绍了在NHibernate中使用HQL(Hibernate Query Language)进行条件查询,特别是模糊查询的方法。HQL是面向对象的查询语言,与SQL类似但操作持久化对象,支持继承、多态和关联等特性。
在HQL中进行模糊查询,有以下几种常见方式:
1. 检索姓名以特定字符开始的User对象:例如,要找到所有以字母"T"开头的User对象,可以编写如下HQL语句:
```java
String hql = "From TUser as t where t.name like 'T%'";
```
这里的`'T%'`是一个通配符,`%`代表任意数量的任意字符。
2. 检索姓名中包含特定子串的User对象:如果要找到所有名字中包含字符串"om"的User对象,HQL语句如下:
```java
String hql = "From TUser as t where t.name like '%om%'";
```
在这里,`'%om%'`表示"om"可以出现在名字的任何位置。
3. 检索特定字符开头,并且满足特定长度的User对象:比如找所有以"T"开头且长度为3的User对象,HQL语句如下:
```java
String hql = "From TUser as t where t.name like 'T__'";
```
在这种情况下,两个下划线`__`代表两个任意字符。
HQL不仅限于模糊查询,还包括其他多种查询方式:
- **条件查询**:根据指定条件筛选对象,例如,根据年龄大于某个值的条件来查询用户。
- **连接查询**:通过JOIN操作将多个表或类关联起来查询,如一对多、多对多关系的查询。
- **分组查询**:使用GROUP BY子句对查询结果进行分组,通常结合聚合函数(如COUNT, SUM, AVG等)一起使用。
- **聚焦查询**(聚合查询):例如,找出用户中最大或最小的年龄。
- **子查询**:在主查询中嵌套一个或多个查询,用于更复杂的逻辑判断。
在实际应用中,HQL通常依赖于`Query`类,通过它来执行查询并获取结果集。例如,创建一个`Query`实例,设置参数,然后调用`find`方法执行查询并转换结果到指定的集合类型。
例如,对于一对一关系的查询,假设有一个`TDepartment`类,其ID为`long`类型,可以使用以下HQL查询语句获取ID为指定值的部门对象:
```java
String hql = "from TDepartment as t where t.id = ?";
IList<TDepartment> list = this.find(hql, id);
```
而对于一对多或多对多关系的查询,例如部门与岗位的关系,可以通过查询岗位来获取其对应的部门:
```java
String hql = "select t.department from TGangWeiXiShu as t where t.id = ?";
```
对于多对多关系,如用户与角色,可以查询用户对应的所有角色,或者通过角色查询所有关联的用户。
HQL提供了一种强大的、面向对象的方式来处理数据库查询,使得在NHibernate框架中操作数据更加方便和灵活。
2012-07-24 上传
2009-03-18 上传
2009-02-05 上传
2009-05-21 上传
2007-08-24 上传
2019-03-18 上传
2007-08-17 上传
2012-11-27 上传
我的小可乐
- 粉丝: 26
- 资源: 2万+
最新资源
- C语言数组操作:高度检查器编程实践
- 基于Swift开发的嘉定单车LBS iOS应用项目解析
- 钗头凤声乐表演的二度创作分析报告
- 分布式数据库特训营全套教程资料
- JavaScript开发者Robert Bindar的博客平台
- MATLAB投影寻踪代码教程及文件解压缩指南
- HTML5拖放实现的RPSLS游戏教程
- HT://Dig引擎接口,Ampoliros开源模块应用
- 全面探测服务器性能与PHP环境的iprober PHP探针v0.024
- 新版提醒应用v2:基于MongoDB的数据存储
- 《我的世界》东方大陆1.12.2材质包深度体验
- Hypercore Promisifier: JavaScript中的回调转换为Promise包装器
- 探索开源项目Artifice:Slyme脚本与技巧游戏
- Matlab机器人学习代码解析与笔记分享
- 查尔默斯大学计算物理作业HP2解析
- GitHub问题管理新工具:GIRA-crx插件介绍