在上一篇文章中,我们继续在DynamoDB数据库上插入数据。

在本教程中,我们将对DynamoDB表发出一些基本查询。 主要规则是每个查询都必须使用哈希键。

查询的最简单形式是仅使用哈希键。 我们将在此表上查询Users表。 结果只有一个,因此在迭代“项目”列表上没有用。

public Map<String,AttributeValue> getUser(String email) {Map<String,String> expressionAttributesNames = new HashMap<>();expressionAttributesNames.put("#email","email");Map<String,AttributeValue> expressionAttributeValues = new HashMap<>();expressionAttributeValues.put(":emailValue",new AttributeValue().withS(email));QueryRequest queryRequest = new QueryRequest().withTableName(TABLE_NAME).withKeyConditionExpression("#email = :emailValue").withExpressionAttributeNames(expressionAttributesNames).withExpressionAttributeValues(expressionAttributeValues);QueryResult queryResult = amazonDynamoDB.query(queryRequest);List<Map<String,AttributeValue>> attributeValues = queryResult.getItems();if(attributeValues.size()>0) {return attributeValues.get(0);} else {return null;}}

但是,我们可以使用条件发出更复杂的查询。
登录表非常适合作为示例。 我们将发出一个查询,以获取到日期之间的登录尝试。

public List<Map<String ,AttributeValue>> queryLoginsBetween(String email, Date from, Date to) {List<Map<String,AttributeValue>> items = new ArrayList<>();Map<String,String> expressionAttributesNames = new HashMap<>();expressionAttributesNames.put("#email","email");expressionAttributesNames.put("#timestamp","timestamp");Map<String,AttributeValue> expressionAttributeValues = new HashMap<>();expressionAttributeValues.put(":emailValue",new AttributeValue().withS(email));expressionAttributeValues.put(":from",new AttributeValue().withN(Long.toString(from.getTime())));expressionAttributeValues.put(":to",new AttributeValue().withN(Long.toString(to.getTime())));QueryRequest queryRequest = new QueryRequest().withTableName(TABLE_NAME).withKeyConditionExpression("#email = :emailValue and #timestamp BETWEEN :from AND :to ").withExpressionAttributeNames(expressionAttributesNames).withExpressionAttributeValues(expressionAttributeValues);Map<String,AttributeValue> lastKey = null;do {QueryResult queryResult = amazonDynamoDB.query(queryRequest);List<Map<String,AttributeValue>> results = queryResult.getItems();items.addAll(results);lastKey = queryResult.getLastEvaluatedKey();} while (lastKey!=null);return items;}

请记住,DynamoDB提取页面中的数据,因此如果有多个页面,则必须多次发出同一请求。 因此,您必须使用上次评估的密钥来处理下一个请求。

最后但并非最不重要的是,对索引的查询是基本操作之一。 对于本地或全局二级索引,它是相同的例程。
请记住,获取的结果取决于创建表后指定的投影类型。 在我们的情况下,投影类型适用于所有字段。

我们将使用“主管”表。

public Map<String ,AttributeValue> getSupervisor(String company,String factory) {List<Map<String,AttributeValue>> items = new ArrayList<>();Map<String,String> expressionAttributesNames = new HashMap<>();expressionAttributesNames.put("#company","company");expressionAttributesNames.put("#factory","factory");Map<String,AttributeValue> expressionAttributeValues = new HashMap<>();expressionAttributeValues.put(":company",new AttributeValue().withS(company));expressionAttributeValues.put(":factory",new AttributeValue().withS(factory));QueryRequest queryRequest = new QueryRequest().withTableName(TABLE_NAME).withKeyConditionExpression("#company = :company and #factory = :factory ").withIndexName("FactoryIndex").withExpressionAttributeNames(expressionAttributesNames).withExpressionAttributeValues(expressionAttributeValues);QueryResult queryResult = amazonDynamoDB.query(queryRequest);List<Map<String,AttributeValue>> attributeValues = queryResult.getItems();if(attributeValues.size()>0) {return attributeValues.get(0);} else {return null;}}

您可以在github上找到带有单元测试的完整源代码。

翻译自: https://www.javacodegeeks.com/2016/07/__trashed-4.html

使用Java查询DynamoDB项相关推荐

  1. dynamodb java_使用Java查询DynamoDB项

    dynamodb java 在上一篇文章中,我们继续在DynamoDB数据库上插入数据. 在本教程中,我们将对DynamoDB表发出一些基本查询. 主要规则是每个查询都必须使用哈希键. 查询的最简单形 ...

  2. dynamodb java_使用Java第2部分查询DynamoDB项

    dynamodb java 在上一篇文章中,我们有机会发布了一些基本的DynamoDB查询操作. 但是,除了基本操作之外,DynamoDB api还为我们提供了一些额外的功能. 投影是具有类似选择功能 ...

  3. 使用Java第2部分查询DynamoDB项

    在上一篇文章中,我们有机会发布了一些基本的DynamoDB查询操作. 但是,除了基本操作之外,DynamoDB api还为我们提供了一些额外的功能. 投影是具有类似选择功能的功能. 您选择应从Dyna ...

  4. dynamodb java_使用Java更新DynamoDB项

    dynamodb java 在上一篇文章中,我们继续使用Java将项目插入DynamoDB. DynamoDB还支持更新项目. 我们将使用Login表获取更新示例. 发布更新时,必须指定要更新的项目的 ...

  5. 使用Java更新DynamoDB项

    在上一篇文章中,我们继续使用Java将项目插入DynamoDB. DynamoDB还支持更新项目. 我们将使用Login表获取更新示例. 发布更新时,必须指定要更新的项目的主键. public voi ...

  6. dynamodb分页查询_使用DynamoDBMapper查询DynamoDB项目

    dynamodb分页查询 在上一篇文章中,我们使用底层Java api在DynamoDB数据库上发出了查询. 使用DynamoDBMapper进行查询非常简单. 使用哈希键发出查询非常简单. 这样的查 ...

  7. dynamodb java_使用Java扫描DynamoDB项目

    dynamodb java 在之前的文章中,我们介绍了如何查询DynamoDB数据库 查询DynamoDB第1部分 查询DynamoDB第2部分 . 除了发出查询之外,DynamoDB还提供扫描功能. ...

  8. 使用DynamoDBMapper查询DynamoDB项目

    在上一篇文章中,我们使用底层Java api在DynamoDB数据库上发出了查询. 使用DynamoDBMapper进行查询非常简单. 使用哈希键发出查询非常简单. 这样的查询的最佳候选者是通过使用电 ...

  9. 使用Java扫描DynamoDB项目

    在之前的文章中,我们介绍了如何查询DynamoDB数据库 查询DynamoDB第1部分 查询DynamoDB第2部分 . 除了发出查询之外,DynamoDB还提供扫描功能. 扫描所做的是获取您在Dyn ...

最新文章

  1. 管道 过滤器风格 java_完成基于管道过滤器风格的KWI实现.doc
  2. SNAP实现(转自SuiFei)
  3. KdPrint 在checked 和free版本的不同
  4. 英语计算机房和操场怎么读,计算机房对我们学习帮助很大. the , in studies , computer , room , helps , lot , a , our , us...
  5. 一句话加速grep近30倍
  6. C#LeetCode刷题之#844-比较含退格的字符串​​​​​​​(Backspace String Compare)
  7. 今天预计有多少人买饭团?李彦宏说百度用PaddlePaddle给答案
  8. OpenCV android 开发
  9. Atitit 管理体制 编号制 1.数字编码有何好处 数字编码有何好处 1、归档整理方便,特别在电子管理系统中; 2、数字编码更容易进行管理,无论谁进行的编码都是一样,管理方便,人员无论怎么换,程序
  10. 用tensorflow实现矩阵分解
  11. java版教材管理系统源码
  12. 【解决windows】Windows Linux双系统安装历程,超详细
  13. word2016文档怎样添加封面?简单技巧!word文档如何设置加入封面?
  14. 【转帖】2004年最一针见血的279句话
  15. 炫龙炎魔T1笔记本 Win7 系统安装
  16. 美丽的日本与我(川端康成在诺贝尔文学奖颁奖典礼上的演讲词)
  17. 输入法不见了,咋办?输入法不能开机启动咋办?
  18. 苹果要给高通多少钱?瑞银分析师预计最多支付60亿美元
  19. ubuntu 小新pro14 网卡驱动、键盘、触摸板
  20. 我的世界网易怎么调成java,网易版我的世界如何将单机地图改为联机地图

热门文章

  1. “老师,请您多关注一下我吧!!!”
  2. 你喜欢什么样的课堂?
  3. SSM整合简单登录案例
  4. springboot 页面下载文件 网页下载文件功能 文件放resourcce下面
  5. 使用IDEA Maven搭建Mybatis环境
  6. python数据分析架构_Python数据分析
  7. 为什么jdk的CLASSPATH环境变量需要设置rt.jar 和 tools.jar
  8. java分布式对象(RMI+部署使用RMI的程序)
  9. selenium自动化测试_49自动化测试中最常见的Selenium异常
  10. jsf 项目_您将在下一个项目中使用JSF吗?