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

dynamodb分页查询

在上一篇文章中,我们使用底层Java api在DynamoDB数据库上发出了查询。

使用DynamoDBMapper进行查询非常简单。

使用哈希键发出查询非常简单。 这样的查询的最佳候选者是通过使用电子邮件哈希键进行搜索的Users表。

public User getUser(String email) {User user = dynamoDBMapper.load(User.class,email);return user;}

由于我们仅对用户表使用哈希键,因此结果将被限制为一个。

加载功能也可用于复合键。 因此,查询登录表项将需要哈希键和范围键。

public Login getLogin(String email,Long date) {Login login =  dynamoDBMapper.load(Login.class,email,date);return login;}

下一步是使用条件发出更复杂的查询。 我们将发出一个查询,该查询将获取两个日期之间的登录尝试。

public List<Login> queryLoginsBetween(String email, Long from, Long to) {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)));expressionAttributeValues.put(":to",new AttributeValue().withN(Long.toString(to)));DynamoDBQueryExpression<Login> queryExpression = new DynamoDBQueryExpression<Login>().withKeyConditionExpression("#email = :emailValue and #timestamp BETWEEN :from AND :to ").withExpressionAttributeNames(expressionAttributesNames).withExpressionAttributeValues(expressionAttributeValues);return dynamoDBMapper.query(Login.class,queryExpression);}

我们使用DynamoDBQueryExpression,其方式与在低级api中使用的方式相同。
主要区别在于我们根本不需要处理分页。 DynamoDBMapper会将DynamoDB项映射到对象,但还将返回“延迟加载”集合。 它最初仅返回一页结果,然后在需要时对下一页进行服务调用。

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

public Supervisor getSupervisor(String company,String factory) {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));DynamoDBQueryExpression<Supervisor> dynamoDBQueryExpression = new DynamoDBQueryExpression<Supervisor>().withIndexName("FactoryIndex").withKeyConditionExpression("#company = :company and #factory = :factory ").withExpressionAttributeNames(expressionAttributesNames).withExpressionAttributeValues(expressionAttributeValues).withConsistentRead(false);List<Supervisor> supervisor = dynamoDBMapper.query(Supervisor.class,dynamoDBQueryExpression);if(supervisor.size()>0) {return supervisor.get(0);} else {return null;}}

要特别注意一致读取设置为false的事实。 DynamoDBQueryExpression使用默认的一致读取。 使用全局二级索引时,无法发出一致的读取。

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

翻译自: https://www.javacodegeeks.com/2016/10/__trashed.html

dynamodb分页查询

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

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

相关文章

python字典编码_python中包含UTF-8编码中文的列表或字典的输出

>>> dict {"asdf": "我们的python学习"} >>> print dict {asdf: \xe6\x88\x91\xe4\xbb\xac\xe7\x9a\x84python\xe5\xad\xa6\xe4\xb9\xa0} 在输出处理好的数据结构的时候很不方便&#xff0c;需要使用以下方法进行输出&#xff1a; >…

php中的ol标签,html5中ol标签的用法详解

这篇文章主要介绍了详解HTML5中ol标签的用法,是HTML5入门学习中的基础知识,需要的朋友可以参考下定义和用法标签定义有序列表。HTML 4.01 与 HTML 5 之间的差异在 HTML 4.01 中&#xff0c;不赞成使用 "start" 属性&#xff0c;在 HTML 5 中是允许的。在 HTML 4.01 中…

portlet_平台策略:从Portlet到OpenSocial小工具再到渐进式Web应用程序:最新技术

portlet介绍 由于世界仍在Java的掌控之中&#xff0c;因此我们经常定义所谓的基于组件的平台 。 我在2000年拥有OpenUSS&#xff08;开放大学支持系统&#xff09;的经验。 当时我有一个想法&#xff0c;就是开发一个可以使用组件体系结构和J2EE技术​​&#xff08; OpenUSS C…

MySQL JDBC URL各参数详解

通常MySQL连接URL可以设置为&#xff1a; jdbc:mysql://localhost:3306/test?userroot&password123456&useUnicodetrue&characterEncodinggbk &autoReconnecttrue&failOverReadOnlyfalse&serverTimezoneUTC&drivercom.mysql.cj.jdbc.Driver注&am…

keil5函数 默认返回值_C++ 函数的定义

“ C对于函数的基本用法”01—函数的定义//函数声明&#xff1a;[返回值类型] [函数名称] (参数列表)int Function(int a, int b);//函数定义int Function(int a, int b){ //函数体 return a b;}02—函数的默认参数定义函数时可以在参数列表中为形参指定默认值int Function2…

apc php7,深入解析php之apc

apc定义&#xff1a;apc是一个开放自由的php opcode缓存。它的目标是提供一个自由、开放和健全的框架&#xff0c;用于缓存和优化php中间代码。apc常用函数&#xff1a;1.apc_clear_cache() 清楚apc缓存内容2.apc_define_constants(string key,array constants,[,bool case_sen…

Apache NetBeans?

在JavaOne之前的几天和几周内发布有关Java世界的重要公告是很常见的。 考虑到这一点&#xff0c;不足为奇的是&#xff0c;我们在下周开始的JavaOne 2016之前看到了一些与Java有关的重要公告。 马克莱因霍尔德 &#xff08; Mark Reinhold &#xff09;的JDK 9计划变更提案是一…

已经创建了AWS EC2实例,Linux系统默认没有root用户,那么如何创建root用户并更改为root用户登录呢?

文章目录1. 如何创建ROOT及设置密码2.更改登陆方式&#xff0c;采用ROOT用户登陆a. 编辑EC2实例的ssh登录方式b. 再编辑authorized_keys文件&#xff0c;将ssh-rsa 前面的文字全部删除&#xff0c;确保ssh-rsa没有任何文字&#xff0c;包括空格。3. 重新登陆对于刚创建AWS EC2实…

输入一个正整数求所有素数因子_一起来聊聊素数的两个性质

素数(prime number)&#xff0c;又称质数&#xff0c;有无限个。定义&#xff1a;在大于1的自然数中&#xff0c;除了1和它本身以外不再有其他因数。来介绍两个简单的性质&#xff1a;质数的个数是无穷的。欧几里得的《几何原本》曾有一经典证明&#xff0c;用的是反证法。当然…

基于docker微服务架构_使用基于微服务的流架构更好地进行大规模的复杂事件处理(第1部分)...

基于docker微服务架构基于微服务的流架构与开源规则引擎相结合&#xff0c;使实时业务规则变得容易 这篇文章旨在详细介绍我将OSS业务规则引擎与Kafka风格的现代流消息传递系统集成在一起的项目。 该项目的目标&#xff08;即众所周知的复杂事件处理&#xff08;CEP&#xff0…

php怎样下载网上的文件,php怎样实现文件下载

用head() 和 fread()函数把文件直接输出到浏览器。具体代码&#xff1a;<?php $file_name "down";$file_name "down.zip"; //下载文件名$file_dir "./down/"; //下载文件存放目录//检查文件是否存在if (! file_exists ( $file_dir . $fil…

Windows 系统下,移动硬盘无法识别怎么修复?

方案1&#xff1a;移动硬盘没有驱动器号 有时移动硬盘插入计算机&#xff0c;但无法在我的计算机上显示。此时&#xff0c;可能只是因为移动硬盘没有驱动器号。 右键单击此计算机&#xff08;计算机&#xff09;&#xff0c;然后单击[管理]将其打开。 点击左边的[磁盘管理]&a…

欢乐鼠标自动点击器_使用ESP32 DIY蓝牙自动点击器,滑屏器

前言因为爱薅羊毛&#xff0c;然后正好最近免费车一趟接一趟&#xff0c;咪咕开完&#xff0c;京东开&#xff0c;京东开完掌阅开&#xff0c;下一个不知道是谁&#xff0c;&#xff0c;&#xff0c;&#xff0c;可我又不是什么很有耐心的人&#xff0c;虽然我喜欢看书&#xf…

java单词按字典排序_最终Java日志字典:开发人员最常记录的单词是什么?

java单词按字典排序最终的记录字典&#xff0c;或者&#xff1a;我们记录的最常见单词是什么&#xff1f; 日志文件是调试应用程序的最常用方法&#xff0c;当解决错误时&#xff0c;它们肯定可以引导我们朝正确的方向发展。 但是&#xff0c;大多数日志文件每天都会增加一百万…

winscp使用密钥登录远程linux系统

说明&#xff1a; WinSCP是一个Windows环境下使用SSH的开源图形化SFTP客户端。同时putty也是一个开源连接ssh的windows客户端&#xff0c;本文介绍puttyWinSCP密钥对登录linux服务器。 1. 创建密钥对 安装openssl yum –y install openssl #openssl一般服务器都会预装 创建密…

php api 实例maccms,苹果cmsV10API接口说明

api接口仅供提供数据&#xff0c;可以直接在苹果CMS后台联盟采集中加入-并提供给他人采集。联盟资源分配唯一标识ID&#xff0c;用来区别绑定分类&#xff0c;这个ID一般由苹果CMS官方提供&#xff0c;不可随意修改设置&#xff0c;否则造成入库分类错乱。视频接口同时支持老板…

dml语句包括哪些_聊聊MySQL基本操作DDL,DML,DQL,DCL

本篇文章来回顾一下MySQL的基本操作之DDL&#xff0c;DML&#xff0c;DQL&#xff0c;DCL&#xff0c;每种操作都有各自不同的语法&#xff0c;常用的操作汇总如下。一、DDL-数据定义语言作用&#xff1a;数据定义语言主要用来定义数据库中的各类对象&#xff0c;包括用户、库、…

Windows 系统下使用 putty 客户端通过 SSH 远程连接 AWS 服务器

找到在购买亚马逊的AWS服务器时保存的密钥文件&#xff08;假设为abc.pem&#xff09;。 打开PuTTYgen&#xff0c;如下图&#xff0c;点击图中1处的“load”,找到abc.pem文件所在的位置&#xff0c;并选择abc.pem&#xff0c;确定&#xff1b; 然后&#xff0c;选择图中2处…

ip integrator_使用Oracle Data Integrator(和Kafka / MapR流)完善Lambda体系结构

ip integrator“ Lambda体系结构是一种数据处理体系结构&#xff0c;旨在通过利用批处理和流处理方法来处理大量数据。 这种体系结构方法尝试通过使用批处理提供批处理数据的全面而准确的视图&#xff0c;同时使用实时流处理提供在线数据的视图来平衡延迟 &#xff0c; 吞吐量和…