DynamoDB ItemCollection<QueryOutcome> to java 对象



我想把ItemCollection转换成我的java pojo对象。我现在想通过以下方式来完成。最好的方法是什么?

QuerySpec spec = new QuerySpec()
.withKeyConditionExpression("txn_id = :txnId")
.withFilterExpression("rrn = :rrn")
.withValueMap(new ValueMap()
.withString(":txnId", txnId)
.withString(":rrn", rrn))
.withConsistentRead(true);
ItemCollection<QueryOutcome> items = table.query(spec);

这里我得到了ItemCollection。现在我将把它转换成我的java pojo:-

Iterator<Item> iter = items.iterator();
while (iter.hasNext()) {
String txn = iter.next().toJSON();
Gson gson = new Gson();
Test t = gson.fromJson(txn, Test.class);
return t;
}

有没有一种方法可以像我们在mysql中那样直接将dynadb获取值(ItemCollection(转换为javapojo?为什么我总是得到json,然后转换为pojo。我们在其他数据库中没有这样做,比如mysql或oracle数据库。

文本.java

public class Test implements Serializable {

@DynamoDBAttribute(attributeName = "txn_id")
@JsonProperty("txn_id")
@DynamoDBHashKey
private String txnId;
private String umn;
private String note;
@DynamoDBAttribute(attributeName = "rrn")
private String rrn;
@DynamoDBAttribute(attributeName = "expire_on")
private Date expireOn;

@DynamoDBAttribute(attributeName = "expire_after")
private Integer expireAfter;
@DynamoDBAttribute(attributeName = "created_on")
@DynamoDBAutoGeneratedTimestamp(strategy= DynamoDBAutoGenerateStrategy.CREATE)
private Date createdOn;
}

是的,看看DynamoDBMapper。使用相同的pojo注释。。。

CatalogItem partitionKey = new CatalogItem();
partitionKey.setId(102);
DynamoDBQueryExpression<CatalogItem> queryExpression = new DynamoDBQueryExpression<CatalogItem>()
.withHashKeyValues(partitionKey);
List<CatalogItem> itemList = mapper.query(CatalogItem.class, queryExpression);
for (int i = 0; i < itemList.size(); i++) {
System.out.println(itemList.get(i).getTitle());
System.out.println(itemList.get(i).getBookAuthors());
}

最新更新