Amazon web services 使用ObjectMapper从数据库检索项
一般来说,我对编码是完全陌生的,所以这是我第一次尝试,所以如果我问一些愚蠢的问题,不要开枪打我;现在我甚至很难理解后端的广阔世界 所以我在服务中遇到了一些问题,甚至决定哪条路最好,扫描,查询。。。什么 所以我认为我的方法是扫描。。。根据项目的id从数据库检索项目时遇到问题。检索所有项目的工作就像一个魅力,我需要类似的东西来获取一个项目。我在搜索网页时感到困惑,甚至不理解其中的区别,例如scanfilter,scanexpression?这就是为什么我还没有想出一个好的尝试。。。但我需要的是扫描表并检索具有匹配id的项。我尝试查看检索所有SearchCase的方法,并实现检索一个SearchCase的方法,因为它看起来应该完全相同,但没有成功 编辑方法一点:方法我需要帮助:Amazon web services 使用ObjectMapper从数据库检索项,amazon-web-services,amazon-dynamodb,Amazon Web Services,Amazon Dynamodb,一般来说,我对编码是完全陌生的,所以这是我第一次尝试,所以如果我问一些愚蠢的问题,不要开枪打我;现在我甚至很难理解后端的广阔世界 所以我在服务中遇到了一些问题,甚至决定哪条路最好,扫描,查询。。。什么 所以我认为我的方法是扫描。。。根据项目的id从数据库检索项目时遇到问题。检索所有项目的工作就像一个魅力,我需要类似的东西来获取一个项目。我在搜索网页时感到困惑,甚至不理解其中的区别,例如scanfilter,scanexpression?这就是为什么我还没有想出一个好的尝试。。。但我需要的是扫描表
public SearchCase getSearchCase(String id){
//this is obviously for a list, but how do I do it for ONE item?
HashMap<String, AttributeValue> sc = new HashMap<String, AttributeValue>();
sc.put("scId", new AttributeValue().withS(id));
ScanRequest scanRequest = new ScanRequest()
.withTableName(searchCaseTableName)
.withFilterExpression("id = scId");
ScanResult scanResult = client.scan(scanRequest);
?????
return searchCase;
}
作为参考,这里是检索所有项目的方法,它确实有效:
public List<SearchCase> getSearchCases() {
final List<SearchCase> cases = new ArrayList<SearchCase>();
ScanRequest scanRequest = new ScanRequest()
.withTableName(searchCaseTableName);
ScanResult result = client.scan(scanRequest);
try {
for (Map<String, AttributeValue> item : result.getItems()) {
SearchCase searchCase = mapper.readValue(item.get("payload").getS(), SearchCase.class);
cases.add(searchCase);
}
} catch (Exception e) {
throw new RuntimeException(e);
}
return cases;
}
根据项目id从数据库检索项目时遇到问题
如果您想根据某个唯一的ID从DynamoDB检索一个项目,那么使用,它将加载一个具有给定哈希键的对象。这已经是永远的了,但我想我会在6月份发布我与之斗争了很长时间的正确答案。这就是我检索单个项目的解决方案:
public SearchCase getSearchCase(String id) throws Exception {
Table t = db.getTable(searchCaseTableName);
GetItemSpec gis = new GetItemSpec()
.withPrimaryKey("id", id);
Item item = t.getItem(gis);
SearchCase searchCase = mapper.readValue(StringEscapeUtils.unescapeJson(item.getJSON("payload").substring(1)), SearchCase.class);
return searchCase;
}
这个方法实际上采用了一种完全不同的方法,然后是我最初认为可以解决这个问题的方法。所以没有Scanrequest,而是使用GetItemSpec和Item。因此,这导致JSON中出现了一些奇怪的反斜杠,因此在我运行StringEscapeUtils.unescapeJson之前,我的前端不会接受,否则它会很有魅力。好的,谢谢……但我真的无法理解基于此的语法,使用google查看一些示例也没有给我答案。我不需要扫描表格,从表格中找到正确的项目吗?或者load也能做到这一点?就像我说的,如果我问愚蠢的问题,不要开枪!