dynamodb java_使用Java查询DynamoDB项

dynamodb java

在上一篇文章中,我们继续在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

dynamodb java

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/335807.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

冰点还原离线激活_冰点还原密钥,小编告诉你如何激活冰点还原

冰点还原软件&#xff0c;它具有轻松安装、动态保护、实时瞬间恢复&#xff0c;操作简单的特点。安装了冰点还原的系统&#xff0c;无论进行了安装文件&#xff0c;还是删除文件、更改系统设置等操作&#xff0c;计算机重新启动后&#xff0c;一切将恢复成初始状态。不过这些都…

【WebRTC---源码篇】(四)WebRTC线程模型

常见的线程模型 1.为了解决频繁线程创建与销毁,在此模型中使用的线程池。在线程池创建的时候就将一些线程创建起来,以提高效率。通过控制线程数量来解决线程频繁切换。 2.一般线程与线程存在前后关系的,线程执行完毕之后生成一个新的任务(task1 , task2,task3---)插入到任…

java cuba_CUBA平台–用于快速应用程序开发的开源Java框架

java cuba传统上&#xff0c;自计算时代开始以来&#xff0c;企业软件开发自然面临着一个挑战&#xff0c;当时自然而然地&#xff0c;企业软件开发本应专注于解决实际的业务问题&#xff0c;但与此同时&#xff0c;开发人员必须在技术上花费大量时间和精力。解决方案的一面&am…

web project、web service project和java project的区别

java project就是普通的用java写的程序&#xff0c;直接就能运行的&#xff0c;web project,web service project不能直接运行&#xff0c;必须在容器里面运行&#xff0c;这个容器就是web server&#xff0c;例如tomcat,jboss。web project就是web工程&#xff0c;简单的讲做网…

WebRTC Qos优化杂记

WebRTC视频JitterBuffer详解 详细内容链接 JitterBuffer延迟换流畅 在丢包+延迟+抖动的弱网环境下,推流端通过NACK+FEC等方式做了一定的容错,但是可能并不能百分之百解决所有问题,而且通过SFU分发到拉流端之后,拉流端网络也可能有问题,这个时候需要JitterBuffer来做媒体…

keras添加正则化全连接_TensorFlow keras卷积神经网络 添加L2正则化

model keras.models.Sequential([#卷积层1keras.layers.Conv2D(32,kernel_size5,strides1,padding"same",data_format"channels_last",activationtf.nn.relu,kernel_regularizerkeras.regularizers.l2(0.01)),#池化层1keras.layers.MaxPool2D(pool_size2,…

java中什么时候应用异常_生产Java应用程序中的十大异常类型-基于1B事件

java中什么时候应用异常Pareto记录原理&#xff1a;97&#xff05;的记录错误语句是由3&#xff05;的唯一错误引起的 在最新的数据整理帖子之后&#xff0c;我们收到了很多反馈和问题&#xff0c;我们发现97&#xff05;的记录错误是由10个唯一错误引起的 。 根据大众的需求&…

C++ 11 深度学习(十四)C++类

(一)综述&#xff1a;类是我们自己定义的数据类型 设计时要考虑的角度&#xff1a; 站在设计和实现的角度来考虑&#xff1b;站在使用者的角度考虑&#xff1b;父类&#xff0c;子类之间的考虑&#xff1b; &#xff08;二&#xff09;explicit 首先, C中的explicit关键字只…

手动编译 lombok_Lombok,一种编译时Java注释预处理器,可最大程度地减少代码大小...

手动编译 lombok在本文中&#xff0c;我们将看到如何在常规Java代码中使用lombok来最大程度地减少代码长度和冗余。 什么是Lombok&#xff1f; Lombok&#xff0c;一个编译时注释预处理器&#xff0c;有助于在编译时注入一些代码。 在详细介绍之前&#xff0c;我要求您应该从…

MyEclipse for Windows快捷键

文章目录编辑查询/替换导航调试重构其他自定义快捷键技巧编辑 快捷键功能说明Ctrl1快速修复&#xff08;最经典的快捷键,就不用多说了&#xff0c;可以解决很多问题&#xff0c;比如import类、try catch包围等&#xff09;CtrlShiftF格式化代码。团队有统一的代码格式&#xf…

微信小程序view动态长度_微信小程序实现动态获取元素宽高的方法分析

本文实例讲述了微信小程序实现动态获取元素宽高的方法。分享给大家供大家参考&#xff0c;具体如下&#xff1a;我以前一直以为微信小程序不能动态获取view元素的宽高。但是自从看到&#xff1a; wx.createSelectorQuery() 这个api接口&#xff0c;以前的某些问题就能得到解决了…

数据结构【双指针算法】

双指针一般应用于维护两个队列&#xff0c;或者同一队列。 常见写法如下 for (int i 0, j 0; i < n; i){while (j < i && check(i, j)) j;//每道题的具体逻辑} 双指针的核心思想是把如下O(n^2)的算法优化位O(n) for (int i 0; i < n; i){for (int j 0; …

antlr 语言 库_关于ANTLR的通用库的需求:使用反射来构建元模型

antlr 语言 库我是一名语言工程师&#xff1a;我使用多种工具来定义和处理语言。 在其他工具中&#xff0c;我使用ANTLR&#xff1a;它简单&#xff0c;灵活&#xff0c;可以围绕它进行构建。 但是我发现自己围绕ANTLR为不同的项目重建了类似的工具。 我看到两个问题&#xff…

Windows 如何通过命令启动和关闭 Tomcat

首先你的系统要安装tomcat&#xff0c;至于如何安装tomcat这里就不讲解了&#xff0c;接着你打开windows的DOS命令终端&#xff08;winR打开运行窗口&#xff0c;输入cmd即可&#xff09;&#xff0c;然后通过DOS命令切换到tomcat安装目录下的bin目录&#xff0c;最后执行start…

mysql超大表处理方式是_第29问:MySQL 的复制心跳说它不想跳了

问题最近年底&#xff0c;大家的数据库经常跑批量大事务&#xff0c;会发现复制突然断开&#xff0c;报错“心跳与本地信息不兼容”&#xff1a;会是什么原因&#xff1f;实验我们先来复现一下&#xff0c;再进行分析。宽油&#xff0c;做一对主从数据库&#xff1a;我们先造一…

Java的访问控制修饰符_访问权限修饰符_访问权限修饰词

public > protected > (default) > private 1.public 修饰的&#xff0c;在任何地方都可以访问 2.protected 修饰的&#xff0c;在类内部、同一个包、子类中能访问 3.default 表示在本类中、同一个包中能访问&#xff0c;但是在代码中不可以直接写 default&#xff0…

red hat安装宝塔_只需几分钟即可安装Red Hat Container Development Kit(视频)

red hat安装宝塔自从我开始使用各种形式的OpenShift&#xff08;例如带盒的Online&#xff0c;然后又作为容器化的图像&#xff09;玩耍以来&#xff0c;没有什么比Red Hat Container Development Kit&#xff08;CDK&#xff09;的可用性令我兴奋。 该套件使您可以轻松地访问…

基于RTP的QOS算法简介

服务质量QoS&#xff08;Quality of Service&#xff09;用于评估服务方满足客户服务需求的能力。通过配置QoS&#xff0c;对企业的网络流量进行调控&#xff0c;避免并管理网络拥塞&#xff0c;减少报文的丢失率&#xff0c;同时也可以为企业用户提供专用带宽或者为不同的业务…

es修改type名称_ElasticSearch如何修改索引字段

一、需求 当es字段类型无法支撑业务需求,需要修改到字段类型的时候。例如修改字段类型从Integer变成double,这种情况下,是没办法修改es的字段的type的。 原因是一个字段的类型进行修改之后,ES会重新建立对这个字段的索引信息,ElasticsSearch的底层是Lucene库,字段类型修改…

MyEclipse for Windows 关于 java、jsp、xml、js、html 等文件的注释快捷键及注释格式介绍

文章目录java 的注释单行注释多行注释文本注释jsp 的注释第一种第二种第三种css 的注释js 的注释单行注释奇葩的单行注释多行注释文档注释xml 的注释html 的注释java 的注释 单行注释 public class HelloWorld{public static void main(String [] args){System.out.println(&…