我正在尝试从Amazon AWS学习DynamoDB,并且能够成功检索数据,但是我很难将其转换为可用的形式。
我的目标是将结果转换为我的Data数据类型的ArrayList,这是一个带有属性,getter和setter的ValueObject类。
谢谢!
Map<String,String> expressionAttributesNames = new HashMap<>();
expressionAttributesNames.put("#network_asset_code","network_asset_code");
expressionAttributesNames.put("#temperature","temperature");
Map<String,AttributeValue> expressionAttributeValues = new HashMap<>();
expressionAttributeValues.put(":network_asset_codeValue", new AttributeValue().withS("17AB05"));
expressionAttributeValues.put(":temperature", new AttributeValue().withN("21"));
ScanRequest scanRequest = new ScanRequest()
.withTableName("things")
.withFilterExpression("#network_asset_code = :network_asset_codeValue and #temperature = :temperature")
.withExpressionAttributeNames(expressionAttributesNames)
.withExpressionAttributeValues(expressionAttributeValues);
ScanResult scanResult = client.scan(scanRequest);
List<Map<String,AttributeValue>> attributeValues = scanResult.getItems();
ArrayList<Data> dataArray = new ArrayList<>();
for (Map map: attributeValues) {
Data d = map.values();
dataArray.add(d);
}
答案 0 :(得分:1)
您可以使用DynamoDBMapper使用annotations自动将DynamoDB项目转换为Java对象(POJO)。
答案 1 :(得分:0)
过了一会儿我才能做对:
for (Map map: attributeValues) {
AttributeValue attr = (AttributeValue) map.get("network_asset_code");
Data d = new Data();
d.network_asset_code = attr.getS();
dataArray.add(d);
}