NHibernate分页与排序

NHibernate中分页的方法需要传递两个参数:

currentPageNo: 当前页的页码

pageSize: 每页的数据量

然后使用排序方式,将数据进行排序,排好序之后,再来分页。

代码将类似如下,T是要查找分页的对象类型:

Session.CreateCriteria(typeof(T)) 

            .AddOrder(new Order("列名", true)) /* 这里列名是数据库中名称,true代表是顺序排列,false表示逆序排列。  */

            .SetFirstResult(currentPageNo > 1 ? (currentPageNo - 1) * pageSize : 0) /* 设置起始值。  */

            .SetMaxResults(pageSize) /* 这里设置查询的最大数据量。*/

            .List<T>(); /* 转换成列表返回。*/

这个查询可以通用,因为例子中已经使用了泛型。

接下来,为了进一步通用,可以让列名和排序的方式也通过参数传递进来即可:

colName : 排序列的字段名

ascOrder: bool值,是否使用asc方式排序。

改造后的样子:

Session.CreateCriteria(typeof(T)) 

            .AddOrder(new Order(colName, ascOrder)) /* 这里列名是数据库中名称,true代表是顺序排列,false表示逆序排列。  */

            .SetFirstResult(currentPageNo > 1 ? (currentPageNo - 1) * pageSize : 0) /* 设置起始值。  */

            .SetMaxResults(pageSize) /* 这里设置查询的最大数据量。*/

            .List<T>(); /* 转换成列表返回。*/

Friday, June 22, 2012 | NHibernate

文章评论

No comments posted yet.

发表评论

Please add 2 and 2 and type the answer here:

关于博主

  一枚成分复杂的网络IT分子,常年游弋于电子商务,属于互联网行业分类中的杂牌军。当前正在待业中...