nhibernate数据加载之Criteria加载

2016-01-29 12:47 12 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好像可以);

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

延伸阅读
从资源中加载皮肤 —— 使用免费界面库 AppFace For VC 0.2 美化您的软件 作者:翼山 下载源代码 由于单位上最近要开发一个内部使用的小型项目,我需要一个运行稳定的,能够将皮肤文件放到资源里的并且易于使用的界面开发包,当然,免费的最好。于是利用google一阵...
标签: excel 软件教程
excel添加加载项视频教程 打开表格 步骤1:我们单击Excel表格,把表格打开,然后进入,进入表格之后,我们寻找到表格的左上角,上面会有一个文件的选项,用鼠标左键单击,如图所示; 点击选项 步骤2:点击了文件按钮后,我们在菜单的左侧单击“选项”这一按钮,如图所示; EXCEL加载项 步骤3:弹出“EXCEL...
标签: 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...
标签: excel
excel2010如何加载宏   第一种方法: 先按组和键 Alt + T ,出现下图所示提示 松开后,再单独按下 I 。 然后就是如下图选择 分析工具库 第二种方法: 点击 文件 点击 选项 点击左边 倒数第二个 加载宏 点击 管理 里面 选择的是 excel 加载项 然后点击 转到 即会弹出熟悉的...

经验教程

393

收藏

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