Java(AWS SDK v2)中的 DynamoDB DeleteItem
DeleteItem 按完整主键移除单个项目。在 AWS SDK for Java 2.x 中,你构建一个 DeleteItemRequest 并在 DynamoDbClient 上调用 deleteItem;配合 ReturnValue.ALL_OLD,响应会告诉你是否真的删除了什么。
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.DeleteItemRequest;
import software.amazon.awssdk.services.dynamodb.model.DeleteItemResponse;
import software.amazon.awssdk.services.dynamodb.model.DynamoDbException;
import software.amazon.awssdk.services.dynamodb.model.ReturnValue;
public class DeleteItemExample {
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());
DeleteItemRequest request = DeleteItemRequest.builder()
.tableName("Music")
.key(key)
.returnValues(ReturnValue.ALL_OLD)
.build();
DeleteItemResponse response = ddb.deleteItem(request);
if (response.attributes().isEmpty()) {
System.out.println("No item with that key existed");
} else {
System.out.println("Deleted: " + response.attributes());
}
} catch (DynamoDbException e) {
System.err.println(e.getMessage());
}
}
}说明
key— 必须包含每个主键属性:简单键仅需分区键,复合键则需分区键和排序键。- 删除是幂等的 — 删除一个不存在的键仍是成功(无错误)。配合
returnValues(ReturnValue.ALL_OLD),被删除的项目会在response.attributes()中返回;空映射意味着那里本来什么都没有。 DeleteItem的ReturnValues仅支持NONE(默认)和ALL_OLD—ALL_NEW/UPDATED_*选项属于UpdateItem。- 条件删除 — 加上一个
conditionExpression(例如attribute_exists(Artist)以在项目缺失时失败,或Awards = :zero以在某个值上做守卫);失败的条件会抛出ConditionalCheckFailedException。 DeleteItem每次调用移除一个项目。没有"删除全部"的 API——要清空一张表,请用Scan迭代键并批量删除,或删除表后重新创建。
可视化操作
用条件来保护删除?DynamoDB Expression Builder 会替你组装 ConditionExpression 以及名称/值映射。
想在 GUI 中删除项目——选中行、确认、完成,生成的代码只需一次点击即可获得——请下载 DynoTable。
相关示例
- Go 中的 DynamoDB DeleteItem — 用 AWS SDK for Go v2 完成同样的删除。
- Java 中的 DynamoDB PutItem — 同一个键的写入侧。
- DynamoDB 条件表达式 — 用
attribute_exists和值检查来保护删除。 - DynamoDB ConditionalCheckFailedException — 失败的条件删除会抛出什么,以及它何时是预期之内的。
References
- DeleteItem — Amazon DynamoDB API Reference
- Use DeleteItem with an AWS SDK or CLI — Amazon DynamoDB Developer Guide
- DynamoDbClient — AWS SDK for Java 2.x API Reference
- DeleteItemRequest — AWS SDK for Java 2.x API Reference
- Condition expressions — Amazon DynamoDB Developer Guide
Last verified 2026-07-13 against the official AWS documentation linked above.