本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
更改属性的更新行为
在执行更新操作时,可以自定义单个属性的更新行为。DynamoDB 增强型客户端 API 中更新操作的一些示例是 updateItem () 和 ()
例如,假设您想在记录中存储在时间戳上创建的内容。但是,您希望只有在数据库中没有该属性的现有值时才写入其值。在这种情况下,你使用WRITE_IF_NOT_EXISTS
更新行为。
以下示例显示了向createdOn
属性添加行为的注释。
@DynamoDbBean public class Customer extends GenericRecord { private String id; private Instant createdOn; @DynamoDbPartitionKey public String getId() { return this.id; } public void setId(String id) { this.name = id; } @DynamoDbUpdateBehavior(UpdateBehavior.WRITE_IF_NOT_EXISTS) public Instant getCreatedOn() { return this.createdOn; } public void setCreatedOn(Instant createdOn) { this.createdOn = createdOn; } }
在构建静态表架构时,您可以声明相同的更新行为,如注释行 1 之后的以下示例所示。
static final TableSchema<Customer> CUSTOMER_TABLE_SCHEMA = TableSchema.builder(Customer.class) .newItemSupplier(Customer::new) .addAttribute(String.class, a -> a.name("id") .getter(Customer::getId) .setter(Customer::setId) .tags(StaticAttributeTags.primaryPartitionKey())) .addAttribute(Instant.class, a -> a.name("createdOn") .getter(Customer::getCreatedOn) .setter(Customer::setCreatedOn) // 1. Add an UpdateBehavior. .tags(StaticAttributeTags.updateBehavior(UpdateBehavior.WRITE_IF_NOT_EXISTS))) .build();