NHibernate使用ICriteria分页并返回总记录条数
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了NHibernate使用ICriteria分页并返回总记录条数,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1797字,纯文字阅读大概需要3分钟。
内容图文
![NHibernate使用ICriteria分页并返回总记录条数](/upload/InfoBanner/zyjiaocheng/1332/7d4a15cc706b4def943284fe981e2ba2.jpg)
最近在使用NHibernate,发现进行分页查询无法得到数据库记录的总条数,在网上找了很久没找到具体的实现方法,找到的资料都说得不是很清楚,研究了很久终于写出了这样一个方法。
NHibernate下分页要使用Icriteria约束查询条件,但是返回的只有当前页的记录数,无法返回数据库总记录条数,这样在使用的时候就算不出总页数。自定义一个分页响应对象PageResponse用于返回记录总条数和分页查询结果集。
UniqueResult()将
SetProjection()所附加的条件去掉,
注意一定要clone一个Icriteria来分页,否则只用一个
Icriteria来完成两次操作会报错。
参考网上的方法,先创建一个ICriteria用于查询数据库记录总条数,再clone
一个用于分页查询,返回我自己定义的PageResponse对象,包含记录总条数和分页查询结果集。获得数据库记录总数之后要用
/// <summary> /// 分页查询 /// </summary> /// <param name="pageSize"> 每页显示记录条数 </param> /// <param name="pageNumber"> 页码 </param> /// <returns></returns> public PageResponse<RequestMessage> GetRequestMessageList(int pageNumber, int pageSize) { using (ISession session = sessionFactory.OpenSession()) { ICriteria criteria = session.CreateCriteria(typeof(RequestMessage)); ICriteria pageCriteria = CriteriaTransformer.Clone(criteria); PageResponse<RequestMessage> requestMessage = new PageResponse<RequestMessage>(); requestMessage.TotalCount =Convert.ToInt32(criteria.SetProjection(Projections.RowCount()).UniqueResult()); requestMessage.ResultList = pageCriteria .SetFirstResult(pageSize * (pageNumber < 1 ? 0 : pageNumber - 1)) .SetMaxResults(pageSize) .List<RequestMessage>(); session.Flush(); return requestMessage; } }
原文:http://www.cnblogs.com/hongfei008/p/3524717.html
内容总结
以上是互联网集市为您收集整理的NHibernate使用ICriteria分页并返回总记录条数全部内容,希望文章能够帮你解决NHibernate使用ICriteria分页并返回总记录条数所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。