dus*_*shu 7 java amazon-web-services amazon-dynamodb
我使用 dynamodbmapper 在 dynamodb 表中实现了扫描操作,但我没有得到所有结果。每当我运行程序时,扫描都会返回不同数量的项目。
代码片段:
DyanmoDBScanExpression scanExpression = new DynamoDBScanExpression();
List<Books> scanResult = mapper.scan(Books.class, scanExpression);
Run Code Online (Sandbox Code Playgroud)
我调查了一下,发现扫描返回的物品有限制。但我找不到使用映射器从表中获取所有项目的方法!有没有办法让我可以循环遍历表中的所有项目。我已经在 JVM 中设置了足够的堆内存,因此不会出现内存问题。
在java中使用不带任何过滤器的DynamoDBScanExpression,
// Change to your Table_Name (you can load dynamically from lambda env as well)
DynamoDBMapperConfig mapperConfig = new DynamoDBMapperConfig.Builder().withTableNameOverride(DynamoDBMapperConfig.TableNameOverride.withTableNameReplacement("Table_Name")).build();
DynamoDBMapper mapper = new DynamoDBMapper(client, mapperConfig);
DynamoDBScanExpression scanExpression = new DynamoDBScanExpression();
// Change to your model class
List < ParticipantReport > scanResult = mapper.scan(ParticipantReport.class, scanExpression);
// Check the count and iterate the list and perform as desired.
scanResult.size();
Run Code Online (Sandbox Code Playgroud)
扫描应返回所有项目。
问题是返回的集合是延迟加载的。您需要遍历列表,当它消耗所有获取的项目时,将在幕后进行额外的调用以引入更多项目(直到所有项目都被引入)。
http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/JavaQueryScanORMModelExample.html
在那个例子中是:
List<Book> scanResult = mapper.scan(Book.class, scanExpression);
for (Book book : scanResult) {
System.out.println(book);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
31670 次 |
| 最近记录: |