有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

DynamoDB(Java)中基于数字限制和偏移量的分页

我想在DynamoDBsimilar to Postgres中实现基于数字限制和偏移量的分页

我的API看起来像这样:http://foo.bar/user?offset=50&limit=20

在Java中,不考虑DynamoDBuses ^{} and ^{} to paginate风险的最好方法是什么

编辑:

让我们假设基于偏移量的分页是一个硬要求,我不知道“之前”页面。我的API协定具有offsetlimit查询参数,如上所述。我不是在寻找“不做基于偏移量的分页”的答案


共 (1) 个答案

  1. # 1 楼答案

    在查看how PaginatedList work in the sdk之后,似乎最有效的方法是在配置中使用ITERATION_ONLY分页加载策略,并执行以下操作:

    DynamoDBMapperConfig config = new DynamoDBMapperConfig.Builder()
                           .withPaginationLoadingStrategy(ITERATION_ONLY)
                           .build();
    PaginatedQueryList<MyUser> users = dynamoDBMapper.query(MyUser.class, myQueryExpression, config);
    // This iterator will fetch 1MB worth of data 'on-demand'
    Iterator<MyUser> userIterator = users.iterator();
    skip(iterator, offset);
    List<MyUser> aPageOfUser = collect(iterator, limit);
    
    

    当然,我将承担在那里实现自己的skipcollect方法的成本。有没有更好/更简洁的方法

    编辑:

    看来我可以利用IteratorUtils from commons-collections免费获得skipcollect

    Iterator<MyUser> userIterator = IteratorUtils.boundedIterator(users.iterator(), offset, limit);
    List<MyUser> aPageOfUser = IteratorUtils.toList(userIterator);