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>(); /* 转换成列表返回。*/