findPagedList
使用 PagedList 的好处在于,除了使用带有 Query.setFirstRow(int) 和 Query.setMaxRows(int) 的普通查询之外,它还包装了可以调用 Query.findFutureCount() 以确定总行数、总页数等的功能。
在内部,这是通过在查询中使用 Query.setFirstRow(int) 和 Query.setMaxRows(int) 来实现的。这会转换为使用 limit offset、rownum 或 row_number 函数来限制结果集的 SQL。
示例:包括总行数的典型用法
// Find the first 100 new orders
PagedList<Order> pagedOrders
= Order.find.where()
.status.equalTo(Order.Status.NEW)
.order()
id.asc()
.setMaxRows(100)
.findPagedList();
// Optional: initiate the loading of the total
// row count in a background thread
pagedOrders.loadRowCount();
// fetch and return the list in the foreground thread
List<Order> orders = pagedOrders.getList();
// get the total row count (from the future)
int totalRowCount = pagedOrders.getTotalRowCount();