NHibernate HQL 函数参考与示例
需积分: 10 194 浏览量
更新于2024-09-09
收藏 3KB TXT 举报
"NHibernate HQL 可用函数大全"
在NHibernate中,HQL(Hibernate Query Language)是一种面向对象的查询语言,它允许开发者以类和属性的方式编写查询,而不是直接处理数据库表和列。本资源主要介绍了在NHibernate HQL中可用的一些常见函数和查询模式。
1. **分页查询**: `from Category c where ...` 这种基本的HQL语句用于从Category类中选择数据。可以添加`where`子句来设置条件,例如`c.name > 'c5'`。
2. **排序**: `order by`关键字用于对查询结果进行升序或降序排序,如`order by c.name desc`表示按照name字段降序排序,而`asc`表示升序。
3. **分组**: `group by`语句用于按指定字段对数据进行分组,例如`select distinct c from Category c`用于去除重复的Category对象。
4. **范围查询**: `where c.id > :min and c.id < :max`允许我们指定一个范围来筛选记录。在实际执行时,使用`setInteger()`方法设置参数值。
5. **限制返回结果数量**: `setMaxResults()`设置每页显示的最大记录数,`setFirstResult()`则指定从哪一条开始显示,相当于SQL中的OFFSET。
6. **比较操作符**: 包括`>`, `<`, `>=`, `<=`, `=`, `!=`等,例如`c.id > ? and c.id < ?`,这里的`?`是预编译参数,通过`setParameter()`设置实际值。
7. **聚合函数**:
- `count(*)`: 计算查询结果的行数。
- `max()`: 找到某个字段的最大值。
- `min()`: 找到某个字段的最小值。
- `avg()`: 计算某个数值字段的平均值。
- `sum()`: 计算某个数值字段的总和。
8. **范围查询**:
- `between`: `where m.id between 3 and 5`筛选id在3和5之间的记录。
- `in`: `where m.id in (3, 4, 5)`筛选id属于特定集合的记录。
9. **空值检查**:
- `is null`: `where m.cont is null`检查cont字段是否为空。
- `is not null`: `where m.cont is not null`检查cont字段是否非空。
10. **字符串操作函数**:
- `lower()`: 将字符串转换为小写,如`lower(t.title)`。
- `upper()`: 将字符串转换为大写,如`upper(t.title)`。
- `trim()`: 去除字符串两端的空白字符,如`trim(t.title)`。
- `concat()`: 字符串连接,如`concat(t.title, '***')`。
- `length()`: 获取字符串长度,如`length(t.title)`。
11. **模糊匹配**:
- `like`: `where t.title like '%5%'`用于执行模糊匹配,`%`代表任意字符的任意次数,`_`代表单个字符。
12. **空集合检查**:
- `isEmpty()`: `where t.msgs isEmpty`检查msgs集合是否为空。
以上列举了NHibernate HQL中的一部分常用函数和查询方式,实际上还有更多的函数和表达式可供使用,如日期时间操作、数学运算等,它们提供了强大的查询能力,使得开发者可以更加灵活地与数据库交互。在实际开发中,了解并熟练运用这些函数能够显著提高代码的可读性和维护性。
2011-11-15 上传
点击了解资源详情
2010-12-05 上传
2007-10-15 上传
2008-10-21 上传
2007-04-05 上传
2010-12-18 上传
vinia
- 粉丝: 6
- 资源: 2
最新资源
- 火炬连体网络在MNIST的2D嵌入实现示例
- Angular插件增强Application Insights JavaScript SDK功能
- 实时三维重建:InfiniTAM的ros驱动应用
- Spring与Mybatis整合的配置与实践
- Vozy前端技术测试深入体验与模板参考
- React应用实现语音转文字功能介绍
- PHPMailer-6.6.4: PHP邮件收发类库的详细介绍
- Felineboard:为猫主人设计的交互式仪表板
- PGRFileManager:功能强大的开源Ajax文件管理器
- Pytest-Html定制测试报告与源代码封装教程
- Angular开发与部署指南:从创建到测试
- BASIC-BINARY-IPC系统:进程间通信的非阻塞接口
- LTK3D: Common Lisp中的基础3D图形实现
- Timer-Counter-Lister:官方源代码及更新发布
- Galaxia REST API:面向地球问题的解决方案
- Node.js模块:随机动物实例教程与源码解析