DynamoDB UpdateItem in Java (AWS SDK v2)
UpdateItem ändert bestimmte Attribute eines Items (und erstellt das Item, falls es nicht existiert) und lässt alles andere unangetastet. Im AWS SDK for Java 2.x baust du einen UpdateItemRequest mit einer updateExpression.
Code
import java.util.HashMap;
import java.util.Map;
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.DynamoDbException;
import software.amazon.awssdk.services.dynamodb.model.ReturnValue;
import software.amazon.awssdk.services.dynamodb.model.UpdateItemRequest;
import software.amazon.awssdk.services.dynamodb.model.UpdateItemResponse;
public class UpdateItemExample {
public static void main(String[] args) {
try (DynamoDbClient ddb = DynamoDbClient.builder()
.region(Region.US_EAST_1)
.build()) {
Map<String, AttributeValue> key = new HashMap<>();
key.put("Artist", AttributeValue.builder().s("Arturo Sandoval").build());
key.put("SongTitle", AttributeValue.builder().s("Cubano Chant").build());
Map<String, String> names = new HashMap<>();
names.put("#upd0", "Genre");
names.put("#upd1", "Year");
names.put("#upd2", "Awards");
Map<String, AttributeValue> values = new HashMap<>();
values.put(":updValue0", AttributeValue.builder().s("Latin Jazz").build());
values.put(":updValue1", AttributeValue.builder().n("1994").build());
values.put(":updValue2", AttributeValue.builder().n("1").build());
UpdateItemRequest request = UpdateItemRequest.builder()
.tableName("Music")
.key(key)
.updateExpression("SET #upd0 = :updValue0, #upd1 = :updValue1 ADD #upd2 :updValue2")
.expressionAttributeNames(names)
.expressionAttributeValues(values)
.returnValues(ReturnValue.ALL_NEW)
.build();
UpdateItemResponse response = ddb.updateItem(request);
System.out.println(response.attributes()); // the item after the update
} catch (DynamoDbException e) {
System.err.println(e.getMessage());
}
}
}Erklärung
key— der vollständige Primärschlüssel des zu aktualisierenden Items.updateExpression— eine oder mehrere Klauseln:SETweist Attribute zu (#upd0 = :updValue0setztGenre;#upd1 = :updValue1setztYear). Jedes Attribut wird perexpressionAttributeNamesaliasiert, sodass reservierte Wörter wieYearimmer sicher sind.ADDauf einer Zahl macht ein atomares Inkrement (ADD #upd2 :updValue2addiert 1 zuAwards) — sicher unter Nebenläufigkeit, kein Read-Modify-Write-Race.REMOVElöscht ein Attribut;DELETEentfernt Elemente aus einem Set.
expressionAttributeValues— die:placeholder→ typisierter-AttributeValue-Map.returnValues(ReturnValue.ALL_NEW)— gibt das vollständige Item nach dem Update inresponse.attributes()zurück (auchUPDATED_NEW,ALL_OLD,UPDATED_OLDoderNONE).- Upsert-Semantik —
UpdateItemerstellt das Item, wenn der Schlüssel nicht existiert. Füge eineconditionExpressionhinzu (z. B.attribute_exists(Artist)) für Nur-Aktualisieren. - Bevorzuge eine Update-Expression gegenüber der veralteten
attributeUpdates-Map — Expressions unterstützen mehrere Klauseln, Aliase und Bedingungen in einer Anfrage.
Visuell erledigen
Der DynamoDB Expression Builder baut SET / ADD / REMOVE-Klauseln mit den Name-/Wert-Maps und kopiert lauffähigen Code.
Um Items in einer GUI zu bearbeiten — ändere ein Feld, prüfe die generierte UpdateExpression, kopiere den Code — lade DynoTable herunter.
Verwandte Beispiele
- DynamoDB UpdateItem in Go — dasselbe Update mit AWS SDK for Go v2.
- DynamoDB PutItem in Java — stattdessen das ganze Item ersetzen.
- DynamoDB-Update-Ausdrücke —
SET,ADD,REMOVE,DELETEund Idiome. - ReturnValues verstehen — was dir jede
ReturnValues-Option gibt. - "Attribute name is a reserved keyword" — warum die Alias-Map hier nicht optional ist.
- "Invalid UpdateExpression"-Syntaxfehler — die häufigen SET/ADD-Syntaxfehler, entschlüsselt.
References
- UpdateItem — Amazon DynamoDB API Reference
- Use UpdateItem with an AWS SDK or CLI — Amazon DynamoDB Developer Guide
- DynamoDbClient — AWS SDK for Java 2.x API Reference
- UpdateItemRequest — AWS SDK for Java 2.x API Reference
- Update expressions — Amazon DynamoDB Developer Guide
Zuletzt verifiziert am 2026-07-13 gegen die oben verlinkte offizielle AWS-Dokumentation.