nhibernate数据加载之Criteria加载

2016-01-29 12:47 9 1 收藏

nhibernate数据加载之Criteria加载,nhibernate数据加载之Criteria加载

【 tulaoshi.com - ASP.NET 】


Criteria是通过一组条件表达式(Expression)来加载数据的,它返回满足条件的对象集合。主要接口为ICriteria,实现为CriteriaImpl类,此类加有Internal修饰,因此不能在程序集外显示创建,nhibernate在session对象中为我们提供了一个方法CreateCriteria,此方法返回ICriteria接口。这里列出了ICriteria接口的一些方法:SetMaxResults:设置返回的最大结果数,可用于分页;SetFirstResult:设置首个对象返回的位置,可用于分页;SetTimeout:设置操作的超时值,此值将传递给IDbCommand对象;Add:加入条件表达式(Expression对象),此方法可多次调用以组合多个条件;AddOrder:加入排序的字段(Order对象);List:返回满足条件的对象集合。Criteria数据加载的关键就在Expression对象上,此对象组成了查询语句的where部分。Expression是一个abstract(抽象)类,它通过一组static方法实现Factory Method(工厂方法)模式,这些static方法返回的都是Expression类的子类,下面列出一些常用的:Eq:返回EqExpression,这是一个相等判断的表达式;Like:返回LikeExpression,这是一个like判断的表达式;Gt:返回GtExpression,这是一个大于判断的表达式;And:返回AndExpression,这是两个表达式And操作后的表达式;Or:返回OrExpression,这是两个表达式Or操作后的表达式;更多的Expression请参考相关文档或源代码。下面以几个例子来说明Criteria数据加载的用法:1. 取得用户名(username)为billy的用户对象:??? Expression ex = Expression.Eq( "Username", "billy" );??? IList users = session.CreateCriteria(typeof(User)).Add( ex ).List();2。取得用户名(username)为billy, 密码为123456的用户对象??? Expression ex = Expression.And( Expression.Eq("Username", "billy"),??? Expression.Eq("Password", "123456") );??? IList users = session.CreateCriteria(type(User)).Add( ex ).List();3. 取得数据中第20-40的用户对象。??? IList users = session.CreateCriteria(typeof(User))???????????????????????????? .SetFirstResult(20).SetMaxResults(40)???????????????????????????? .List();

对于SQLSERVER,数据定位采用的是IDataReader前滚至firstResult处,然后取maxResults条记录。Criteria数据加载的不足:1. 当使用SetFirstResult和SetMaxResults限制返回的对象数时,无法得知对象的总数;2. 当前版本不支持关联查询(hibernate好像可以);

来源:https://www.tulaoshi.com/n/20160129/1487603.html

延伸阅读
从资源中加载皮肤 —— 使用免费界面库 AppFace For VC 0.2 美化您的软件 作者:翼山 下载源代码 由于单位上最近要开发一个内部使用的小型项目,我需要一个运行稳定的,能够将皮肤文件放到资源里的并且易于使用的界面开发包,当然,免费的最好。于是利用google一阵...
标签: flash教程
可以通过帧、按扭、影片剪辑来调用外部文件。调用的外部文件包括:外部文本文件、外部程序文件、外部*.swf文件、外部图片文件、外部音乐文件、外部脚本文件。 一.调用外部文本文件:(文本文件开头要以flash中的动态文本框的变量名开头,如 msg=".........."这样的形式,要和编辑的Flash文件放在同一目录下) 1.用工具箱中的文本工具,选...
标签: Web开发
代码如下: script var l=0; var imgs; var sum=0; var imgs=new Array(); function chk(){   l--;   document.getElementById("aa").innerText=""+((sum-l)*100/sum)+"%"   if (l==0){      for (var i=0;isum;i++)        document.body.innerHTML+="img src='"+imgs[i]....
标签: flash教程
四.调用外部图片(加载到影片剪辑中) 外部图片必须和正在编辑的文件放在同一目录下 1.制作两个按扭(一个调用,一个清除)拖放到场景中 2.制作一个空的影片剪辑,拖到场景中,实例名是:mymc; 3.时间轴上第一帧上的AS: i=0;//定义一个变量i,并且赋初值为0; 调用按扭上的AS: on(release){//鼠标离开按扭后执行下面的代码; i++; if...
數據庫table定義 create table test(image image) delphi程序 ADOQuery1的sql為'select * from test' unit Unit1; interface uses   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,   Dialogs,JPEG,StdCtrls, Buttons, ExtCtrls, DB, ADODB; ...

经验教程

254

收藏

50
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部