0

我正在使用 dynamodb 来存储数据,它可以有各种数据类型,如字符串、数字和 json。map 可以根据 id 有不同的键,因此,它的结构是事先不知道的。

有没有办法让我通过 Dynamodbmapper 检索它?对于其他属性,Java 数据类型(如String, )Long有效,但对于Map或者更确切地说是 a json,我最终得到一个解析错误。我尝试过像这样的数据类型JsonNode

是否有注释或 java 数据类型可以做到这一点?或者我应该回滚到原来的 dynamodb 客户端而不是使用映射器?

4

1 回答 1

0

使用 DynamoDB 增强型客户端是与 DynamoDB 交互的好方法,如下所述:

在 AWS SDK for Java v2 中引入增强型 DynamoDB 客户端

(如果您使用的是 Java V1,则应考虑迁移到 V2 和增强型客户端,如此链接中所述。)

但是,正如您所发现的,在使用此功能时,如果了解数据结构并且您可以创建一个具有映射到表列的数据成员的 Java 类,它会更好地工作。

例如,假设您正在处理客户数据。您可以像这样创建一个 Java 类:

@DynamoDbBean
    public static class Customer {

        private String id;
        private String name;
        private String email;
        private Instant regDate;

        @DynamoDbPartitionKey
        public String getId() {
            return this.id;
        };

        public void setId(String id) {

            this.id = id;
        }

        @DynamoDbSortKey
        public String getCustName() {
            return this.name;

        }

        public void setCustName(String name) {

            this.name = name;
        }

        public String getEmail() {
            return this.email;
        }

        public void setEmail(String email) {

            this.email = email;
        }

        public Instant getRegistrationDate() {
            return regDate;
        }
        public void setRegistrationDate(Instant registrationDate) {

            this.regDate = registrationDate;
        }
    }
 

如果您不了解高级的数据结构(即您不了解 Customer 表),那么使用增强型客户端效率不高。

于 2021-02-18T18:11:29.780 回答