使用Java中的DynamoDBMapper更新DynamoDB项

mee*_*eza 9 java distributed-computing amazon-dynamodb

如何使用DynamoDBMapper更新DynamoDB项?

我有多个进程,使用DynamoDB表,因此,get + save会产生不一致.我找不到使用DynamoDBMapper更新项目的方法.

not*_*est 23

save()方法将执行putItemupdateItem基于SaveBehavior中设置的值.请参阅以下说明.由于这个原因,DynamoDBMapper类中没有更新方法.但是,有一个单独的删除方法可用.

在DynamoDB中保存项目.使用的服务方法由DynamoDBMapperConfig.getSaveBehavior()值确定,以使用AmazonDynamoDB.putItem(PutItemRequest)或AmazonDynamoDB.updateItem(UpdateItemRequest):

UPDATE(默认值): UPDATE不会影响保存操作的未建模属性,而建模属性的空值将从DynamoDB中的该项中删除它.由于updateItem请求的限制,UPDATE的实现将在保存仅密钥对象时发送putItem请求,并且如果表中已存在给定密钥,它将发送另一个updateItem请求.

UPDATE_SKIP_NULL_ATTRIBUTES:与UPDATE类似,只是它忽略任何空值属性,并且不会从DynamoDB中的该项中删除它们.它还保证只发送一个updateItem请求,无论该对象是否为key-only.

CLOBBER: CLOBBER将在保存时清除并替换所有属性,包括未建模的属性(删除并重新创建).版本化字段约束也将被忽略.由于版本化属性,saveExpression参数中指定的任何选项都将覆盖在任何约束上.

用法示例: -

DynamoDBMapperConfig dynamoDBMapperConfig = new DynamoDBMapperConfig(SaveBehavior.UPDATE);
Run Code Online (Sandbox Code Playgroud)

UPDATE DynamoDBMapperConfig(aws sdk 1.11.473)构造函数似乎已被弃用,应该使用构建器:

DynamoDBMapperConfig dynamoDBMapperConfig = new DynamoDBMapperConfig.Builder()
  .withConsistentReads(DynamoDBMapperConfig.ConsistentReads.CONSISTENT)
  .withSaveBehavior(DynamoDBMapperConfig.SaveBehavior.UPDATE)
  .build();
dynamoDBMapper.save(yourObject, dynamoDBMapperConfig);
Run Code Online (Sandbox Code Playgroud)

  • 这应该被标记为答案。 (2认同)