Amazon web services 使用ObjectMapper从数据库检索项

Amazon web services 使用ObjectMapper从数据库检索项,amazon-web-services,amazon-dynamodb,Amazon Web Services,Amazon Dynamodb,一般来说,我对编码是完全陌生的,所以这是我第一次尝试,所以如果我问一些愚蠢的问题,不要开枪打我;现在我甚至很难理解后端的广阔世界 所以我在服务中遇到了一些问题,甚至决定哪条路最好,扫描,查询。。。什么 所以我认为我的方法是扫描。。。根据项目的id从数据库检索项目时遇到问题。检索所有项目的工作就像一个魅力,我需要类似的东西来获取一个项目。我在搜索网页时感到困惑,甚至不理解其中的区别,例如scanfilter,scanexpression?这就是为什么我还没有想出一个好的尝试。。。但我需要的是扫描表

一般来说,我对编码是完全陌生的,所以这是我第一次尝试,所以如果我问一些愚蠢的问题,不要开枪打我;现在我甚至很难理解后端的广阔世界

所以我在服务中遇到了一些问题,甚至决定哪条路最好,扫描,查询。。。什么

所以我认为我的方法是扫描。。。根据项目的id从数据库检索项目时遇到问题。检索所有项目的工作就像一个魅力,我需要类似的东西来获取一个项目。我在搜索网页时感到困惑,甚至不理解其中的区别,例如scanfilter,scanexpression?这就是为什么我还没有想出一个好的尝试。。。但我需要的是扫描表并检索具有匹配id的项。我尝试查看检索所有SearchCase的方法,并实现检索一个SearchCase的方法,因为它看起来应该完全相同,但没有成功

编辑方法一点:方法我需要帮助:

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也能做到这一点?就像我说的,如果我问愚蠢的问题,不要开枪!