NHibernate HQL 函数参考与示例

需积分: 10 5 下载量 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中的一部分常用函数和查询方式,实际上还有更多的函数和表达式可供使用,如日期时间操作、数学运算等,它们提供了强大的查询能力,使得开发者可以更加灵活地与数据库交互。在实际开发中,了解并熟练运用这些函数能够显著提高代码的可读性和维护性。