网站建设管理人员推荐表,标智客logo设计免费生成,计算机包含哪些专业,文件外链生成网站dynamodb分页查询在上一篇文章中#xff0c;我们使用底层Java api在DynamoDB数据库上发出了查询。 使用DynamoDBMapper进行查询非常简单。 使用哈希键发出查询非常简单。 这样的查询的最佳候选者是通过使用电子邮件哈希键进行搜索的Users表。 public User getUser(String e… 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 ListLogin queryLoginsBetween(String email, Long from, Long to) {MapString,String expressionAttributesNames new HashMap();expressionAttributesNames.put(#email,email);expressionAttributesNames.put(#timestamp,timestamp);MapString,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)));DynamoDBQueryExpressionLogin queryExpression new DynamoDBQueryExpressionLogin().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) {MapString,String expressionAttributesNames new HashMap();expressionAttributesNames.put(#company,company);expressionAttributesNames.put(#factory,factory);MapString,AttributeValue expressionAttributeValues new HashMap();expressionAttributeValues.put(:company,new AttributeValue().withS(company));expressionAttributeValues.put(:factory,new AttributeValue().withS(factory));DynamoDBQueryExpressionSupervisor dynamoDBQueryExpression new DynamoDBQueryExpressionSupervisor().withIndexName(FactoryIndex).withKeyConditionExpression(#company :company and #factory :factory ).withExpressionAttributeNames(expressionAttributesNames).withExpressionAttributeValues(expressionAttributeValues).withConsistentRead(false);ListSupervisor 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.htmldynamodb分页查询