【问题标题】:Update specific attributes with DynamoDBMapper in java在 Java 中使用 DynamoDBMapper 更新特定属性
【发布时间】:2020-03-03 13:42:58
【问题描述】:

我只想使用 DynamoDBMapper 更新项目的特定属性。 例如,我有一个带有属性的用户表,即 id、name、address。

@Data
@DynamoDBTable(tableName = "Users")
public class User {

    @DynamoDBHashKey
    @DynamoDBGeneratedUuid(DynamoDBAutoGenerateStrategy.CREATE)
    private String id;

    @DynamoDBAttribute
    private String name;

    @DynamoDBAttribute
    private Address address;

}

我只想更新地址属性而不是其他字段(选择性更新)。

我可以使用 UpdateItemSpec 找到示例示例,但找不到 DynamoDBMapper。 使用 UpdateItemSpec,我可以使用 withUpdateExpression() 来定义更新表达式。 更多详情请见here

有什么方法可以用 DynamoDBMapper 实现同样的效果吗?

【问题讨论】:

    标签: amazon-dynamodb aws-sdk amazon-dynamodb-local


    【解决方案1】:

    使用UPDATE_SKIP_NULL_ATTRIBUTESSaveBehavior

    更多详情:https://aws.amazon.com/blogs/developer/using-the-savebehavior-configuration-for-the-dynamodbmapper/

    将 SaveBehavior 添加到您的 save 操作并保留除 idaddress 以外的字段为 null:

    mapper.save(user, new DynamoDBMapperConfig(SaveBehavior.UPDATE_SKIP_NULL_ATTRIBUTES));
    

    【讨论】:

    • 谢谢。这解决了我的问题。唯一的问题是,DynamoDBMapperConfig 构造函数已被弃用,所以我使用了这种语法。 dynamoDBMapper.save(geo, SaveBehavior.UPDATE_SKIP_NULL_ATTRIBUTES.config());我还有一个疑问,有没有办法在使用 DynamDBMapper 从数据库中检索数据时加载某些属性?
    猜你喜欢
    • 2017-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多