从dynamoDB返回更新的项目

2020年7月20日 31点热度 0条评论

我正在使用dynamoDB ExpressionSpecBuilder(Java)为数据库中的项目创建更新查询。我希望返回整个修改的资源,而不必单独指定所有属性。

有没有办法做到这一点?

解决方案如下:

如果您被迫使用ExpressionSpecBuilder,我找不到任何方法。

但是,还有其他替代方法,例如UpdateItemRequest,您可以将ReturnValues属性设置为ALL_NEW并获取所有属性作为映射:

UpdateItemRequest updateProgramCounterRequest = new UpdateItemRequest()
   .withTableName(...)
   .withUpdateExpression(...)
   .withReturnValues(ReturnValue.ALL_NEW);

UpdateItemResult updateItemResult = amazonDynamoDB.updateItem(updateItemRequest);
Map<String, AttributeValue> attributes = updateItemResult.getAttributes();

然后,您可以将它们映射到您的资源。

更高级别的方法是使用DynamoDBMapper。根据您需要执行的更新类型,您还可以使用
save方法并按照javadoc中的描述修改
DynamoDBMapperConfig.SaveBehavior属性来实现它:
https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/dynamodbv2/datamodeling/DynamoDBMapper.html#save-T-com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBSaveExpression-com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapperConfig-