使用Java查询DynamoDB项
在上一篇文章中,我们继续在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项相关推荐
- dynamodb java_使用Java查询DynamoDB项
dynamodb java 在上一篇文章中,我们继续在DynamoDB数据库上插入数据. 在本教程中,我们将对DynamoDB表发出一些基本查询. 主要规则是每个查询都必须使用哈希键. 查询的最简单形 ...
- dynamodb java_使用Java第2部分查询DynamoDB项
dynamodb java 在上一篇文章中,我们有机会发布了一些基本的DynamoDB查询操作. 但是,除了基本操作之外,DynamoDB api还为我们提供了一些额外的功能. 投影是具有类似选择功能 ...
- 使用Java第2部分查询DynamoDB项
在上一篇文章中,我们有机会发布了一些基本的DynamoDB查询操作. 但是,除了基本操作之外,DynamoDB api还为我们提供了一些额外的功能. 投影是具有类似选择功能的功能. 您选择应从Dyna ...
- dynamodb java_使用Java更新DynamoDB项
dynamodb java 在上一篇文章中,我们继续使用Java将项目插入DynamoDB. DynamoDB还支持更新项目. 我们将使用Login表获取更新示例. 发布更新时,必须指定要更新的项目的 ...
- 使用Java更新DynamoDB项
在上一篇文章中,我们继续使用Java将项目插入DynamoDB. DynamoDB还支持更新项目. 我们将使用Login表获取更新示例. 发布更新时,必须指定要更新的项目的主键. public voi ...
- dynamodb分页查询_使用DynamoDBMapper查询DynamoDB项目
dynamodb分页查询 在上一篇文章中,我们使用底层Java api在DynamoDB数据库上发出了查询. 使用DynamoDBMapper进行查询非常简单. 使用哈希键发出查询非常简单. 这样的查 ...
- dynamodb java_使用Java扫描DynamoDB项目
dynamodb java 在之前的文章中,我们介绍了如何查询DynamoDB数据库 查询DynamoDB第1部分 查询DynamoDB第2部分 . 除了发出查询之外,DynamoDB还提供扫描功能. ...
- 使用DynamoDBMapper查询DynamoDB项目
在上一篇文章中,我们使用底层Java api在DynamoDB数据库上发出了查询. 使用DynamoDBMapper进行查询非常简单. 使用哈希键发出查询非常简单. 这样的查询的最佳候选者是通过使用电 ...
- 使用Java扫描DynamoDB项目
在之前的文章中,我们介绍了如何查询DynamoDB数据库 查询DynamoDB第1部分 查询DynamoDB第2部分 . 除了发出查询之外,DynamoDB还提供扫描功能. 扫描所做的是获取您在Dyn ...
最新文章
- 管道 过滤器风格 java_完成基于管道过滤器风格的KWI实现.doc
- SNAP实现(转自SuiFei)
- KdPrint 在checked 和free版本的不同
- 英语计算机房和操场怎么读,计算机房对我们学习帮助很大. the , in studies , computer , room , helps , lot , a , our , us...
- 一句话加速grep近30倍
- C#LeetCode刷题之#844-比较含退格的字符串​​​​​​​(Backspace String Compare)
- 今天预计有多少人买饭团?李彦宏说百度用PaddlePaddle给答案
- OpenCV android 开发
- Atitit 管理体制 编号制 1.数字编码有何好处 数字编码有何好处 1、归档整理方便,特别在电子管理系统中; 2、数字编码更容易进行管理,无论谁进行的编码都是一样,管理方便,人员无论怎么换,程序
- 用tensorflow实现矩阵分解
- java版教材管理系统源码
- 【解决windows】Windows Linux双系统安装历程,超详细
- word2016文档怎样添加封面?简单技巧!word文档如何设置加入封面?
- 【转帖】2004年最一针见血的279句话
- 炫龙炎魔T1笔记本 Win7 系统安装
- 美丽的日本与我(川端康成在诺贝尔文学奖颁奖典礼上的演讲词)
- 输入法不见了,咋办?输入法不能开机启动咋办?
- 苹果要给高通多少钱?瑞银分析师预计最多支付60亿美元
- ubuntu 小新pro14 网卡驱动、键盘、触摸板
- 我的世界网易怎么调成java,网易版我的世界如何将单机地图改为联机地图
热门文章
- “老师,请您多关注一下我吧!!!”
- 你喜欢什么样的课堂?
- SSM整合简单登录案例
- springboot 页面下载文件 网页下载文件功能 文件放resourcce下面
- 使用IDEA Maven搭建Mybatis环境
- python数据分析架构_Python数据分析
- 为什么jdk的CLASSPATH环境变量需要设置rt.jar 和 tools.jar
- java分布式对象(RMI+部署使用RMI的程序)
- selenium自动化测试_49自动化测试中最常见的Selenium异常
- jsf 项目_您将在下一个项目中使用JSF吗?