Updated on 2024-11-28 GMT+08:00

Paging Query

Function Description

Run the query API to return brief data information, and then call the listRows API to turn pages.

Below is an example of the code implementation.

Sample Code

public void testPagingQuery() {
  LOG.info("Entering testPagingQuery.");

  try (Table table = conn.getTable(tableName)) {
    // Using Table instance to create LemonTable.
    LemonTable lemonTable = new LemonTable(table);
    // Build LemonQuery.
    LemonQuery query = LemonQuery.builder()
      // Set ad-hoc query condition.
      .setQuery("education:bachelor OR education:master")
      // Set how many rows should be cached on client for the initial request.
      .setCaching(10)
      // Set return column family/columns.
      .addFamily(FAM_M)
      .addColumn(FAM_N, QUA_N)
      // Set return return result just contains rowkeys, no any qualifier
      // the CF of LemonConstants.EMPTY_COLUMN_RETURN can be a random existing CF
      //.addColumn(FAM_M, LemonConstants.EMPTY_COLUMN_RETURN)
      .build();
    ResultSet resultSet = lemonTable.query(query);
    // Read result rows.
    int count = resultSet.getCount();
    LOG.info("the entity count of query is " + count);

    // Read result page by page, every page show 10 lines data
    int maxPage = 100;
    final int lineNumPerPage = 5;
    for (int i = 0; i < maxPage; i++) {
      int start = lineNumPerPage * i;
      List<EntityEntry> entries = resultSet.listRows(start, lineNumPerPage);
      if (entries == null || entries.size() == 0)
      {
        break;
      }

      LOG.info("page " + (i + 1) + " count is " + entries.size() + ", result is following:");
      for (EntityEntry entry : entries) {
        Map<String, Map<String, String>> fams = entry.getColumns();
        for (Map.Entry<String, Map<String, String>> familyEntry : fams.entrySet()) {
          String family = familyEntry.getKey();
          Map<String, String> qualifiers = familyEntry.getValue();
          for (Map.Entry<String, String> qualifier : qualifiers.entrySet()) {
            String Qua = qualifier.getKey();
            String value = qualifier.getValue();
            LOG.info("rowkey is " + Bytes.toString(entry.getRow()) + ", qualifier is "
              + family + ":" + Qua + ", value is " + value);
          }
        }
      }
    }
  } catch (IOException e) {
    LOG.error("testPagingQuery failed ", e);
  }

  LOG.info("Exiting testPagingQuery.");
}