Nhibernate Icreteria 分页查询
1、创建查询条件,条件为一个ICreterion的列表
///
/// 创建Criteria(不含order,因为获取总数的时候,为了性能考虑,不加order)
///
/// 类型
/// ICriterion列表
///
public ICriteria CreateCriteria(Type t, List list)
{
ICriteria criteria = Session.CreateCriteria(t);
if (list != null && list.Count > 0)
{
foreach (ICriterion c in list)
{
criteria.Add(c);
}
}
return criteria;
}
2、分页查询
///
///获取排序的pageInfo
///
/// 类型
/// ICriterion列表
/// 升序?true:false
/// 排序字段
///
public PageInfo getOrderdPagedListByCriteria(PageInfo pageInfo,Type t, List list, bool isAsc, string orderBy)
{
ICriteria c= CreateCriteria(t, list);//拼接查询条件
int startNum = pageInfo.CurrentPage * pageInfo.PageSize;
//创建一个同样的ICriteria对象,不然执行总数查询之后,ICriteria的条件依然还是总数查询,下边的结果查询会出错。
ICriteria pageCriteria = CriteriaTransformer.Clone(c);
//执行结果查询,Projections对象会投影到一个新的查询,包含AVG、sum、count等等
pageInfo.RowCount = int.Parse(pageCriteria.SetProjection(Projections.RowCount()).UniqueResult().ToString());
//执行完总数查询之后,就给之前的ICriteria对象创建排序规则
if (isAsc)
c.AddOrder(new Order(orderBy, true));
else
c.AddOrder(new Order(orderBy, false));
//创建完排序规则之后,执行数据查询
pageInfo.Results = c.SetFirstResult(startNum).SetMaxResults(pageInfo.PageSize).List().ToList();
return pageInfo;
}
注:PageInfo是一个分页类
///
/// 结果
///
public List Results { get; set; }
///
/// 当前页码
///
public int CurrentPage { get; set; }
///
/// 页总数(一共有多少页)
///
public int PageCount
{
get
{
if (RowCount == 0)
{
return 1;
}
else
{
return (int)Math.Ceiling(RowCount / (double)PageSize);
}
}
private set
{
this.PageCount = value;
}
}
///
/// 总记录数
///
public int RowCount { get; set; }
///
/// 每页记录数
///
private int pagesize;
public int PageSize
{
get { return pagesize; }
set { pagesize = value; }
}
}
Nhibernate Icreteria 分页查询的更多相关文章
- 基于jqgrid + ashx + nhibernate的分页
因为我目前运维的是一个webform项目,项目中未用到分页的功能,我百度了很多文章也没有一篇是结合jqgrid + ashx + nhibernate的分页,可能是因为后台要请求ashx的原因,不像m ...
- JdbcTemplate+PageImpl实现多表分页查询
一.基础实体 @MappedSuperclass public abstract class AbsIdEntity implements Serializable { private static ...
- 用Hibernate和Struts2+jsp实现分页查询、修改删除
1.首先用get的方法传递一个页数过去 2.通过Struts2跳转到Action 3.通过request接受主页面index传过的页数,此时页数是1, 然后调用service层的方法获取DAO层分页查 ...
- MySQL、Oracle和SQL Server的分页查询语句
假设当前是第PageNo页,每页有PageSize条记录,现在分别用Mysql.Oracle和SQL Server分页查询student表. 1.Mysql的分页查询: SELECT * FROM s ...
- 分页查询和分页缓存查询,List<Map<String, Object>>遍历和Map遍历
分页查询 String sql = "返回所有符合条件记录的待分页SQL语句"; int start = (page - 1) * limit + 1; int end = pag ...
- mysql 分页查询
mysql,; : mysql,; -last. //如果只给定一个参数,它表示返回最大的记录行数目: mysql; 个记录行 ,n. 动态传参的分页查询 SELECT * FROM table LI ...
- MongoDB 分页查询的方法及性能
最近有点忙,本来有好多东西可以总结,Redis系列其实还应该有四.五.六...不过<Redis in Action>还没读完,等读完再来总结,不然太水,对不起读者. 自从上次Redis之后 ...
- .NET平台开源项目速览(7)关于NoSQL数据库LiteDB的分页查询解决过程
在文章:这些.NET开源项目你知道吗?让.NET开源来得更加猛烈些吧!(第二辑) 与 .NET平台开源项目速览(3)小巧轻量级NoSQL文件数据库LiteDB中,介绍了LiteDB的基本使用情况以及部 ...
- SubSonic3.0插件分页查询速度测试
使用SubSonic3.0一段时间了,一直都想找机会测试一下各种查询分页速度,对比一下插件的查询效率到底怎么样,所以昨天写好了测试程序,准备好1K.1W.10W.50W和100W记录的数据表,早上详细 ...
随机推荐
- SQL Server 2012 读写分离设置
SQL Server 2012 读写分离设置 - AlsoIn 时间 2014-07-21 17:38:00 博客园-所有随笔区 原文 http://www.cnblogs.com/also/p/ ...
- WinForm 图形报表控件
http://wenku.baidu.com/link?url=hOCeHErshNOw6NScDG3Y6JjT1mD-A4xHhjthcHyrTgk5NmPRKf0eqeaee4LmKZX5jd7S ...
- PHPExcel说明
下面是总结的几个使用方法include 'PHPExcel.php';include 'PHPExcel/Writer/Excel2007.php';//或者include 'PHPExcel/Wri ...
- PHP学习心得(三)——处理表单
表单的任何元素都在 PHP 脚本中自动生效. 一个简单的 HTML 表单: <form action="action.php" method="post" ...
- Drupal commerce 性能优化
从开始的时候打开一个页面需要超过9秒的时间到现在可以在3秒内打开,给自己带来了很多欣慰. 开始的时候是认为server性能不足,所以讲aliyun服务器从1核升级到了4核,但是发现升级之后和升级之前是 ...
- 树莓派2 安装mono3.0运行mvc4
sudo apt-get updatesudo apt-get upgradesudo apt-get mono-completewget -c http://www.linuxdot.net/dow ...
- cocos2dx伸缩式列表效果
效果: 代码: ElasticListView.h #pragma once //std #include <string> #include <map> //cocos #i ...
- 图片生成操作属性导致WP内存溢出解决办法
在开发的项目中,发现经常会出现异常 “内存溢出,不能再继续执行程序”,通过搜索一些国外的文章,发现原来是由于项目中的图片比较多,而生存操作设为了“内容”.通过设置图片的生成操作为“无”,复制操作为“如 ...
- css3360度旋转动画
@-webkit-keyframes Parallaxs{ from { -webkit-transform: rotate(180deg) ; -moz-transform: rotate(180d ...
- 自适应网页设计(Responsive Web Design)(转)
随着3G的普及,越来越多的人使用手机上网. 移动设备正超过桌面设备,成为访问互联网的最常见终端.于是,网页设计师不得不面对一个难题:如何才能在不同大小的设备上呈现同样的网页? 手机的屏幕比较小,宽度通 ...