文章导读:
分页在前面好几节中的列子中已经出现,现在在详细讲解一下。
有三种方法去实现:
1、Top(int topCount) 方法
在sqlserver和msaccess中其实就是top , 在oracle通过rownum实现。
2、From(int startIndex, int endIndex)
从startIndex条到endIndex条之间的记录数。
3、Page(int pageSize, int pageIndex)
每页pageSiz
分页在前面好几节中的列子中已经出现,现在在详细讲解一下。
有三种方法去实现:
1、Top(int topCount) 方法
在sqlserver和msaccess中其实就是top , 在oracle通过rownum实现。
2、From(int startIndex, int endIndex)
从startIndex条到endIndex条之间的记录数。
3、Page(int pageSize, int pageIndex)
每页pageSize条,第pageIndex页
下面就依次对这三个方法举例说明。
top方法:
DbSession.Default.From<Products>()
.Top(10)
.ToList();该查询时查询products表中的前10条记录,生成的sql语句如下:(如何输出查看组件生成的sql)
Text: SELECT TOP 10 * FROM [Products]
from方法:
DbSession.Default.From<Products>()
.From(3, 8)
.ToList();查找第3条到第8条的数据(包括第3条和第8条),生成的sql语句如下:
Text: SELECT * FROM ( SELECT TOP 6 * FROM ( SELECT TOP 8 * FROM [Products] ORDER BY [Products].[ProductID] ASC) AS tempIntable ORDER BY [ProductID] DESC) AS tempOuttable ORDER BY [ProductID] ASC
page方法:
DbSession.Default.From<Products>()
.Page(10, 2)
.ToList();查询每页10条的第2页数据,sql语句如下:
Text: SELECT * FROM ( SELECT TOP 10 * FROM ( SELECT TOP 20 * FROM [Products] ORDER BY [Products].[ProductID] ASC) AS tempIntable ORDER BY [ProductID] DESC) AS tempOuttable ORDER BY [ProductID] ASC
可以看出from方法和page方法生成的sql语句是格式是一样的,其实page方法最终还是调用from方法,
如果from的startIndex参数等于1就会调用top方法来查询。
默认情况下我们并没有设置排序,组件则会自动添加一个排序,如果有主键则选主键排序,不然选一个其他列排序。
当然在很多情况下我