Arbeiten mit Elementen in DynamoDB - AWS SDK for Java 2.x

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Arbeiten mit Elementen in DynamoDB

In DynamoDB ist ein Element eine Sammlung aus Attributen, von denen jedes über einen Namen und einen Wert verfügt. Ein Attributwert kann eine Skalarfunktion, eine Gruppe oder ein Dokumenttyp sein. Weitere Informationen finden Sie unter Benennungsregeln und Datentypen im -Amazon DynamoDBEntwicklerhandbuch.

Abrufen (get) eines Elements aus einer Tabelle

Rufen Sie die getItem Methode DynamoDbClientdes auf und übergeben Sie ihm ein GetItemRequest Objekt mit dem Tabellennamen und dem Primärschlüsselwert des gewünschten Elements. Es gibt ein GetItemResponse Objekt mit allen Attributen für dieses Element zurück. Sie können einen oder mehrere Projektionsausdrücke in der GetItemRequest angeben, um spezifische Attribute abzurufen.

Sie können die item() Methode des zurückgegebenen GetItemResponse Objekts verwenden, um eine Zuordnung von Schlüsselpaaren (Zeichenfolge) und Wertpaaren (AttributeValue) abzurufen, die dem Element zugeordnet sind.

Importe

import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.dynamodb.model.DynamoDbException; import software.amazon.awssdk.services.dynamodb.DynamoDbClient; import software.amazon.awssdk.services.dynamodb.model.AttributeValue; import software.amazon.awssdk.services.dynamodb.model.GetItemRequest; import java.util.HashMap; import java.util.Map; import java.util.Set;

Code

public static void getDynamoDBItem(DynamoDbClient ddb,String tableName,String key,String keyVal ) { HashMap<String,AttributeValue> keyToGet = new HashMap<String,AttributeValue>(); keyToGet.put(key, AttributeValue.builder() .s(keyVal).build()); GetItemRequest request = GetItemRequest.builder() .key(keyToGet) .tableName(tableName) .build(); try { Map<String,AttributeValue> returnedItem = ddb.getItem(request).item(); if (returnedItem != null) { Set<String> keys = returnedItem.keySet(); System.out.println("Amazon DynamoDB table attributes: \n"); for (String key1 : keys) { System.out.format("%s: %s\n", key1, returnedItem.get(key1).toString()); } } else { System.out.format("No item found with the key %s!\n", key); } } catch (DynamoDbException e) { System.err.println(e.getMessage()); System.exit(1); } }

Sehen Sie sich das vollständige Beispiel auf an GitHub.

Abrufen eines Elements aus einer Tabelle mithilfe des asynchronen Clients (get)

Rufen Sie die -getItemMethode des auf DynamoDbAsyncClient und übergeben Sie ihm ein GetItemRequest Objekt mit dem Tabellennamen und dem Primärschlüsselwert des gewünschten Elements.

Sie können eine Collection-Instance mit allen Attributen für dieses Element zurückgeben (siehe das folgende Beispiel).

Importe

import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.dynamodb.model.GetItemRequest; import software.amazon.awssdk.services.dynamodb.model.AttributeValue; import software.amazon.awssdk.services.dynamodb.DynamoDbAsyncClient; import java.util.HashMap; import java.util.Map; import java.util.Set; import java.util.stream.Collectors; import software.amazon.awssdk.services.dynamodb.model.DynamoDbException;

Code

public static void getItem(DynamoDbAsyncClient client, String tableName, String key, String keyVal) { HashMap<String, AttributeValue> keyToGet = new HashMap<String, AttributeValue>(); keyToGet.put(key, AttributeValue.builder() .s(keyVal).build()); try { // Create a GetItemRequest instance GetItemRequest request = GetItemRequest.builder() .key(keyToGet) .tableName(tableName) .build(); // Invoke the DynamoDbAsyncClient object's getItem java.util.Collection<AttributeValue> returnedItem = client.getItem(request).join().item().values(); // Convert Set to Map Map<String, AttributeValue> map = returnedItem.stream().collect(Collectors.toMap(AttributeValue::s, s->s)); Set<String> keys = map.keySet(); for (String sinKey : keys) { System.out.format("%s: %s\n", sinKey, map.get(sinKey).toString()); } } catch (DynamoDbException e) { System.err.println(e.getMessage()); System.exit(1); }

Sehen Sie sich das vollständige Beispiel auf an GitHub.

Hinzufügen eines neuen Elements in einer Tabelle

Erstellen Sie eine Map mit Schlüssel-Wert-Paaren, die die Attribute des Elements darstellen. Diese müssen Werte für die Primärschlüsselfelder der Tabelle enthalten. Wenn das Element mit dem Primärschlüssel bereits vorhanden ist, werden dessen Felder durch die Anforderung aktualisiert.

Anmerkung

Wenn die benannte Tabelle für Ihr Konto und Ihre Region nicht vorhanden ist, ResourceNotFoundException wird eine ausgelöst.

Importe

import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.dynamodb.model.DynamoDbException; import software.amazon.awssdk.services.dynamodb.DynamoDbClient; import software.amazon.awssdk.services.dynamodb.model.AttributeValue; import software.amazon.awssdk.services.dynamodb.model.PutItemRequest; import software.amazon.awssdk.services.dynamodb.model.ResourceNotFoundException; import java.util.HashMap;

Code

public static void putItemInTable(DynamoDbClient ddb, String tableName, String key, String keyVal, String albumTitle, String albumTitleValue, String awards, String awardVal, String songTitle, String songTitleVal){ HashMap<String,AttributeValue> itemValues = new HashMap<String,AttributeValue>(); // Add all content to the table itemValues.put(key, AttributeValue.builder().s(keyVal).build()); itemValues.put(songTitle, AttributeValue.builder().s(songTitleVal).build()); itemValues.put(albumTitle, AttributeValue.builder().s(albumTitleValue).build()); itemValues.put(awards, AttributeValue.builder().s(awardVal).build()); PutItemRequest request = PutItemRequest.builder() .tableName(tableName) .item(itemValues) .build(); try { ddb.putItem(request); System.out.println(tableName +" was successfully updated"); } catch (ResourceNotFoundException e) { System.err.format("Error: The Amazon DynamoDB table \"%s\" can't be found.\n", tableName); System.err.println("Be sure that it exists and that you've typed its name correctly!"); System.exit(1); } catch (DynamoDbException e) { System.err.println(e.getMessage()); System.exit(1); } }

Sehen Sie sich das vollständige Beispiel auf an GitHub.

Aktualisieren eines vorhandenen Elements in einer Tabelle

Sie können ein Attribut für ein Element, das bereits in einer Tabelle vorhanden ist, aktualisieren, indem Sie die updateItem-Methode des DynamoDbClient aufrufen und einen Tabellennamen, Primärschlüsselwert und eine Zuordnung der Felder übergeben, die aktualisiert werden sollen.

Anmerkung

Wenn die benannte Tabelle für Ihr Konto und Ihre Region nicht vorhanden ist oder wenn das durch den Primärschlüssel identifizierte Element, den Sie übergeben haben, nicht vorhanden ist, ResourceNotFoundException wird eine ausgelöst.

Importe

import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.dynamodb.model.DynamoDbException; import software.amazon.awssdk.services.dynamodb.model.AttributeAction; import software.amazon.awssdk.services.dynamodb.model.AttributeValue; import software.amazon.awssdk.services.dynamodb.model.AttributeValueUpdate; import software.amazon.awssdk.services.dynamodb.model.ResourceNotFoundException; import software.amazon.awssdk.services.dynamodb.model.UpdateItemRequest; import software.amazon.awssdk.services.dynamodb.DynamoDbClient; import java.util.HashMap;

Code

public static void updateTableItem(DynamoDbClient ddb, String tableName, String key, String keyVal, String name, String updateVal){ HashMap<String,AttributeValue> itemKey = new HashMap<String,AttributeValue>(); itemKey.put(key, AttributeValue.builder().s(keyVal).build()); HashMap<String,AttributeValueUpdate> updatedValues = new HashMap<String,AttributeValueUpdate>(); // Update the column specified by name with updatedVal updatedValues.put(name, AttributeValueUpdate.builder() .value(AttributeValue.builder().s(updateVal).build()) .action(AttributeAction.PUT) .build()); UpdateItemRequest request = UpdateItemRequest.builder() .tableName(tableName) .key(itemKey) .attributeUpdates(updatedValues) .build(); try { ddb.updateItem(request); } catch (ResourceNotFoundException e) { System.err.println(e.getMessage()); System.exit(1); } catch (DynamoDbException e) { System.err.println(e.getMessage()); System.exit(1); } System.out.println("Done!"); }

Sehen Sie sich das vollständige Beispiel auf an GitHub.

Löschen eines vorhandenen Elements aus einer Tabelle

Sie können ein Element löschen, das in einer Tabelle vorhanden ist, indem Sie die -deleteItemMethode DynamoDbClientdes verwenden und einen Tabellennamen sowie den Primärschlüsselwert angeben.

Anmerkung

Wenn die benannte Tabelle für Ihr Konto und Ihre Region nicht vorhanden ist oder wenn das durch den Primärschlüssel identifizierte Element, den Sie übergeben haben, nicht vorhanden ist, ResourceNotFoundException wird eine ausgelöst.

Importe

import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.dynamodb.DynamoDbClient; import software.amazon.awssdk.services.dynamodb.model.AttributeValue; import software.amazon.awssdk.services.dynamodb.model.DeleteItemRequest; import software.amazon.awssdk.services.dynamodb.model.DynamoDbException; import java.util.HashMap;

Code

public static void deleteDynamoDBItem(DynamoDbClient ddb, String tableName, String key, String keyVal) { HashMap<String,AttributeValue> keyToGet = new HashMap<String,AttributeValue>(); keyToGet.put(key, AttributeValue.builder() .s(keyVal) .build()); DeleteItemRequest deleteReq = DeleteItemRequest.builder() .tableName(tableName) .key(keyToGet) .build(); try { ddb.deleteItem(deleteReq); } catch (DynamoDbException e) { System.err.println(e.getMessage()); System.exit(1); } }

Sehen Sie sich das vollständige Beispiel auf an GitHub.

Weitere Informationen