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項映射到對象,但還將返回“延遲加載”集合。 它最初僅返回一頁結果,然后在需要時對下一頁進行服務調用。
最后但并非最不重要的是,對索引的查詢是基本操作之一。 對于本地或全局二級索引,它是相同的例程。
請記住,獲取的結果取決于創建表后指定的投影類型。 在我們的情況下,投影類型適用于所有字段。
要特別注意一致讀取設置為false的事實。 DynamoDBQueryExpression使用默認的一致讀取。 使用全局二級索引時,無法發出一致的讀取。
您可以在github上找到帶有單元測試的完整源代碼。
翻譯自: https://www.javacodegeeks.com/2016/10/__trashed.html
dynamodb分頁查詢
總結
以上是生活随笔為你收集整理的dynamodb分页查询_使用DynamoDBMapper查询DynamoDB项目的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 透明车衣用备案吗(透明车衣备案)
- 下一篇: ddos是什么(ddos谁发明的)