В документах API dinary dyna db поддерживает разбиение на страницы для операций сканирования и запроса. Ловушка здесь заключается в том, чтобы установить ExclusiveStartIndex
текущего запроса на значение LastEvaluatedIndex
предыдущего запроса для получения следующей заданной (логической страницы) результатов.
Я пытаюсь реализовать то же самое, но я использую DynamoDBMapper
, который, кажется, имеет гораздо больше преимуществ, таких как жесткая связь с моделями данных. Поэтому, если бы я хотел сделать выше, я предполагаю, что я сделаю что-то вроде ниже:
// Mapping of hashkey of the last item in previous query operation
Map<String, AttributeValue> lastHashKey = ..
DynamoDBQueryExpression expression = new DynamoDBQueryExpression();
...
expression.setExclusiveStartKey();
List<Table> nextPageResults = mapper.query(Table.class, expression);
Надеюсь, мое вышеозначение правильное в разбивке на страницы с использованием DynamoDBMapper. Во-вторых, как я узнаю, что достиг результатов. Из документов, если я использую следующий api:
QueryResult result = dynamoDBClient.query((QueryRequest) request);
boolean isEndOfResults = StringUtils.isEmpty(result.getLastEvaluatedKey());
Возвращаясь к использованию DynamoDBMapper, как я могу узнать, достиг ли я в конце концов результатов.