
NHibernate HQL 函数参考与示例
下载需积分: 10 | 3KB |
更新于2024-09-09
| 168 浏览量 | 举报
收藏
"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中的一部分常用函数和查询方式,实际上还有更多的函数和表达式可供使用,如日期时间操作、数学运算等,它们提供了强大的查询能力,使得开发者可以更加灵活地与数据库交互。在实际开发中,了解并熟练运用这些函数能够显著提高代码的可读性和维护性。
相关推荐









vinia
- 粉丝: 6
最新资源
- C#可空类型实例解析与源代码分享
- Spring MVC与FreeMarker集成实例详解
- 大学物理下册答案解析:电磁波与光的深入理解
- 深入理解SSD3实用测验5:卡耐基软件工程要点
- Nhibernate DLL及配置文件下载指南
- Magento税款计算插件源码分析
- 深入理解延迟加载与迫切加载的实现方法
- C++ Builder6.0界面开发实例深度解析
- 北京大学ACM算法源代码集锦:50题解答解析
- Photoshop Fireworks滤镜Alien Skin Xenofex2中文版安装指南
- 让DOS启动菜单支持中文显示的详细步骤
- ASP与SQL技术入门到精通教程
- 分享优秀的VC串口调试程序源码
- Servlet 中文帮助文档:函数与API详细介绍
- C#集合与字符串处理实战教程(附源代码)
- 深入探讨JAVA类的高级特性
- 深入探讨MASM50程序:高效编程的秘诀
- 基于C#和XML的书店销售管理系统开发
- windows环境下韩语打字练习工具
- C#图书馆管理系统完整设计与文档资料
- 2002世界杯歌曲《Live For Love United》回顾
- 使用朴素贝叶斯算法进行文本分类的VC++实例
- 基于C#的网上书店系统源码及SqlServer2000数据库应用
- 免费更新:纸牌游戏版本修正