findPagedList

FindCount 和 PagedList

Ebean 的 findCount 查询的工作原理以及如何使用 PagedList

 

使用 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();