DynamoDB Mapper" batchLoad()"输入

时间:2017-06-24 17:20:20

标签: amazon-dynamodb

我刚刚使用dynamoDB的batchLoad函数。在这里,documentation 函数说,它输入的是List<KeyPair>。但是当我使用KeyPair对象时,它会抛出参数应为dynamodb annotated class的错误。

我可以使用DynamoDB类,我只设置类的hashKey and rangeKey属性并将它们作为参数传递。但是现在我的用例是Class(DynamoDB注释),我使用的是@NonNull个字段。如果我必须为此传递参数,我必须在其中设置垃圾值,这显然是不可取的。有什么样的帮助/建议吗? 谢谢!

1 个答案:

答案 0 :(得分:3)

以下是工作示例。

<强>要点: -

  • 模型类 - 应该是地图的关键
  • keyPairList - 您要检索的密钥对列表

使用模型类: -

Map<Class<?>, List<KeyPair>> keyPairForTable = new HashMap<>();
            keyPairForTable.put(Movies.class, keyPairList);

完整代码: -

public Boolean batchLoadMoviesUsingKeyPair() {

    DynamoDBMapper dynamoDBMapper = new DynamoDBMapper(dynamoDBClient);

    KeyPair keyPair1 = new KeyPair();
    keyPair1.withHashKey(1991);
    keyPair1.withRangeKey("Movie with map attribute");

    KeyPair keyPair2 = new KeyPair();
    keyPair2.withHashKey(2010);
    keyPair2.withRangeKey("The Big New Movie 2010");

    List<KeyPair> keyPairList = new ArrayList<>();
    keyPairList.add(keyPair1);
    keyPairList.add(keyPair2);

    Map<Class<?>, List<KeyPair>> keyPairForTable = new HashMap<>();
    keyPairForTable.put(Movies.class, keyPairList);

    Map<String, List<Object>> batchResults = dynamoDBMapper.batchLoad(keyPairForTable);

    for (Map.Entry<String, List<Object>> entry : batchResults.entrySet()) {
        System.out.println(entry.getKey());
        System.out.println(entry.getValue());
    }

    return true;

}