在 Java 中使用 DynamoDBMapper 更新 DynamoDB 项目
如何使用 DynamoDBMapper 更新 DynamoDB 項目?
我有多个进程,使用 DynamoDB 表,因此,获取 + 保存将产生不一致。我找不到使用 DynamoDBMapper 更新项目的方法。
如何使用 DynamoDBMapper 更新 DynamoDB 項目?
我有多个进程,使用 DynamoDB 表,因此,获取 + 保存将产生不一致。我找不到使用 DynamoDBMapper 更新项目的方法。
save()
方法将执行 或 基于 SaveBehavior 中设置的值。请参阅以下说明。由于这个原因,DynamoDBMapper 类中没有更新方法。但是,有一个单独的删除方法可用。putItem
updateItem
在 DynamoDB 中保存项目。使用的服务方法由 DynamoDBMapperConfig.getSaveBehavior() 值确定,以使用 AmazonDynamoDB.putItem(PutItemRequest) 或 AmazonDynamoDB.updateItem(UpdateItemRequest):
更新(默认):UPDATE 不会影响保存操作中未建模的属性,并且建模属性的 null 值会将其从 DynamoDB 中的该项目中删除。由于 updateItem 请求的限制,UPDATE 的实现将在保存仅键对象时发送 putItem 请求,如果表中已存在给定键,它将发送另一个 updateItem 请求。
UPDATE_SKIP_NULL_ATTRIBUTES :与 UPDATE 类似,只是它忽略任何空值属性,并且不会从 DynamoDB 中的该项目中删除它们。它还保证只发送一个 updateItem 请求,无论对象是否为仅键。
揍:CLOBBER 将在保存时清除并替换所有属性(包括未建模的属性)(删除并重新创建)。版本化字段约束也将被忽略。由于版本化属性,在 saveExpression 参数中指定的任何选项都将覆盖在任何约束上。
用法示例:-
DynamoDBMapperConfig dynamoDBMapperConfig = new DynamoDBMapperConfig(SaveBehavior.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);
要使 dynamo 数据库写入操作保持一致,您必须在乐观锁定和条件写入之间选择一个选项。
以下是 AWS 文档的链接,这些文档可能会对您有所帮助;