NHibernate之旅(4):探索查询之条件查询(Criteria Query)

本节内容

NHibernate中的查询方法

条件查询(Criteria Query)

1.创建ICriteria实例

2.结果集限制

3.结果集排序

4.一些说明

根据示例查询(Query By Example)

实例分析

结语

上一节,我们介绍了NHibernate查询语言的一种:NHibernate查询语言(HQL,NHibernate Query Language),这一节介绍一下条件查询(Criteria API)。

NHibernate中的查询方法

在NHibernate中提供了三种查询方式给我们选择:NHibernate查询语言(HQL,NHibernate Query Language)、条件查询(Criteria API,Criteria Query)、(根据示例查询(QBE,Query By Example)是条件查询的一种特殊情况)、原生SQL(Literal SQL,T-SQL、PL/SQL)。每个人有不同的喜好和特长,可以根据自己的情况选择使用其中的一种或几种。这一节我们介绍条件查询。

条件查询(Criteria Query)

HQL极为强大,但是有些人希望能够动态的使用一种面向对象API创建查询,而不是在.NET代码中嵌入字符串。在NHibernate中,提供了一种直观的、可扩展的Criteria API。在我们键入查询语句的时候,提供了编译时的语法检查,VS提供了强大的智能提示。如果你对HQL的语法感觉不是很舒服的话,用这种方法可能更容易。这种API也比HQL更可扩展。

典型用法:从ISession接口中创建ICriteria实例对象;在这个ICriteria实例对象上设置一个或多个表达式;要求ICriteria接口返回需要的列表,就是根据表达式从数据库中返回对象。

注意:由于篇幅有限,我在这里仅仅贴出了数据访问层的代码。测试这些方法的代码就没有贴出来了,你可以下载本系列的源代码仔细看看测试这些方法的代码。这些实例我争取写出来可以运行起来,大家下载源码看看效果,一些数据需要按个人数据库里的数据情况修改。例如查询条件和结果。这节,我们在上一节源代码的基础上,在数据访问层中新建QueryCriteriaAPI.cs类用于编写条件查询方法,在数据访问的测试层新建一QueryCriteriaAPIFixture.cs类用于测试。

时间: 2024-09-23 09:28:07

NHibernate之旅(4):探索查询之条件查询(Criteria Query)的相关文章

select-mysql 在查询的时候能不能同时带模糊查询和条件查询?

问题描述 mysql 在查询的时候能不能同时带模糊查询和条件查询? 比如: select * from t_user where name = '张三' and sex like '%妖%' 解决方案 模糊匹配也是一种条件啊,,所以是可以的,, 解决方案二: 可以 select name,sex from t_user where name = "张三" and sex like '%妖%' 解决方案三: 当然可以,and相当于要求两个条件都满足才能返回结果 解决方案四: 肯定是可以的

PHP组合查询多条件查询实例代码第1/2页_php基础

   先向大家说明需求:按照我们系统的要求,我们将通过部门名称.员工姓名.PC名称.IP地址等等字段来进行组合查询从而得到想要的数据结果.那么,为了简单起见,我们用两个条件(部门名称.员工姓名)的组合查询来向大家说明这一技术技巧.当我们只输入部门名而员工姓名为空值时,那么部门内所有员工信息将被呈现,只有当你同时限制部门与员工姓名时,才能查询出唯一信息.     那就让我们开始.     首先建立查询页面search.php,不同于上次单一条件查询,这次我们需要两个条件的组合进行查询. <html

NHibernate之旅(10):探索父子(一对多)关联查询

本节内容 关联查询引入 一对多关联查询 1.原生SQL关联查询 2.HQL关联查询 3.Criteria API关联查询 结语 关联查询引入 在NHibernate中提供了三种查询方式给我们选择:NHibernate查询语言(HQL,NHibernate Query Language).条件查询(Criteria API,Query By Example(QBE)是Criteria API的一种特殊情况).原生SQL(Literal SQL,T-SQL.PL/SQL).这一节分别使用这三种方式来

NHibernate之旅(24):探索NHibernate二级缓存(下)

本节内容 引入 使用NHibernate二级缓存 启用缓存查询 管理NHibernate二级缓存 结语 引入 呵呵,今天收到了微软"最有影响力开发者"礼包,很高兴自己荣获"微软最有影响力开发者"称号(详情请进),这篇我还继续上一篇的话题聊聊NHibernate二级缓存剩下的内容,比如你修改.删除数据时,二级缓存是什么策略呢?我们如果使用缓存查询呢?如何管理NHibernate二级缓存呢? 使用NHibernate二级缓存 不知道具体配置的请转到NHibernate之

NHibernate之旅(17):探索NHibernate中使用存储过程(下)

本节内容 引入 实例分析 拾遗 结语 引入 上两篇,介绍使用MyGeneration提供的模板创建存储过程和删除对象.创建对象.更新对象整个详细过程,这篇介绍如何利用<sql-query>做更多的事,在程序开发中,我们不仅仅只利用存储过程增删查改对象,我们还可以想执行任意的存储过程,这不局限于某个对象,某个CURD操作,怎么做呢?注意:本篇并非官方权威的资料,所以敬请参考.如果你还没有学习NHibernate,请快速链接到NHibernate之旅系列文章导航. 实例分析 下面我用几个例子来分析

[NHibernate]条件查询Criteria Query

 目录 写在前面 文档与系列文章 条件查询 一个例子 总结 写在前面 上篇文章介绍了HQL查询,我个人觉得使用ORM框架就是为了让少些sql,提高开发效率,而再使用HQL就好像还是使用sql,就觉得有点又回到使用sql的年代.但是完全不用hql也不是绝对的,HQL更接近原生态的sql,对于一些比较复杂的查询,HQL的作用就体现出来了.作为使用面向对象语言的程序员,有时更愿意采用面向对象的方式去思考问题,去实现查询,这就是本篇文章要学习的条件查询(Criteria Query). 文档与系列文章

NHibernate之旅(18):初探代码生成工具使用

本节内容 引入 代码生成工具 结语 引入 我们花了大量的篇幅介绍了相关NHibernate的知识,一直都是带着大家手动编写代码,首先创建数据库架构,然后编写持久化类和映射文件,最后编写数据操作方法,测试方法.这是典型的数据库驱动开发(DbDD,Database-Driven Developent)技术,但是自己不是这样做的,我先编写持久化类和映射文件,然后偷偷的使用SchemaExport工具把数据库生成了,按上面的步骤写文章的,关于SchemaExport工具就是下一篇的事情了,这篇说说利用数

[原创]Fluent NHibernate之旅(四)-- 关系(上)

经过了前面三篇的介绍,相信大家对Fluent NHibernate已经有一定的了解了,在我们学习中,Fluent 也已经进入了RTM版本.这次的版本发布离RC版只有半个月不到,修正了很多bug,同时补充了大量的功能,在每天更新中,也看到了大量的单元测试,我们相信Fluent NHibernate 已经相对稳定成熟了.RTM相对于RC版本来说,使用方法没有太大的变化,所以不做讲解. 我们后面的教程,会使用RTM版本来演示,希望大家能及时更新(点击下载最新版). Fluent NHibernate之

MVC 多条件查询,带分页的

问题描述 MVC 多条件查询,带分页的 这是绑定的代码,获取前台 Request.Form[""name""],后怎么增加查询条件 page = page == null ? 1 : page; rows = rows == null ? 1 : rows; List<TBL_M_SECURITY_STAFF> list = db.TBL_M_SECURITY_STAFF.OrderBy(a => a.Security_Staff_ID).Skip