Batch Delete Using DynamoDB Mapper (Guide w/ Code Examples)

Provided by Rafal Wilinski
Last updated: October 23rd, 2026
Use BatchWriteItem with DeleteRequest entries to delete items whose full keys you already know. Retry only the returned UnprocessedItems; the whole batch is not atomic.
DynamoDBMapper belongs to AWS SDK for Java 1.x and cannot be constructed with a 2.x DynamoDbClient. The example below shows the SDK 2.x low-level equivalent. For mapped domain objects, use the DynamoDB Enhanced Client.
This example uses Java 17+ and the software.amazon.awssdk:dynamodb SDK 2.x dependency. Configure an AWS Region and credentials through your usual AWS profile or runtime role. The Orders table has String keys pk and sk; adapt the table and keys to your schema.
import java.util.*; import software.amazon.awssdk.services.dynamodb.DynamoDbClient; import software.amazon.awssdk.services.dynamodb.model.*; public class Example { static AttributeValue s(String value) { return AttributeValue.builder().s(value).build(); } static Map<String, AttributeValue> key(String order) { return Map.of("pk", s("CUSTOMER#123"), "sk", s(order)); } public static void main(String[] args) throws InterruptedException { try (DynamoDbClient ddb = DynamoDbClient.create()) { List<WriteRequest> writes = new ArrayList<>(); for (String order : List.of("ORDER#001", "ORDER#002")) { writes.add(WriteRequest.builder().deleteRequest(DeleteRequest.builder().key(key(order)).build()).build()); } Map<String, List<WriteRequest>> pending = Map.of("Orders", writes); for (int attempt = 0; !pending.isEmpty(); attempt++) { if (attempt == 8) throw new IllegalStateException("Unprocessed writes: " + pending); if (attempt > 0) Thread.sleep((long) (Math.random() * Math.min(5000L, 100L << attempt))); pending = ddb.batchWriteItem(BatchWriteItemRequest.builder() .requestItems(pending).build()).unprocessedItems(); } } } }
Each batch supports at most 25 put/delete operations. Batch deletes cannot use conditions; use DeleteItem or transactions if deletion depends on the current item state.
Reference: AWS BatchWriteItem API. For related access patterns, see DynamoDB query examples.
Similar Code Examples
- Remove with DynamoDB Mapper
- Batch Load Using DynamoDB Mapper
- Query Local Secondary Index in DynamoDB Using Java
- Update Expression in DynamoDB Using Java
- Batch Read in DynamoDB Using Java
- Batch Save Using DynamoDB Mapper
- Delete Multiple Items in DynamoDB Using Java
- Insert in DynamoDB Using Java
- Get Multiple Items in DynamoDB Using Java
- Delete All Items in DynamoDB Using Java
- Get All Items from DynamoDB Using Java
- Batch Insert in DynamoDB Using Java
- Update Item in DynamoDB Using Java
- Query Global Secondary Index in DynamoDB Using Java
- Update Attribute in DynamoDB Using Java
Dynobase is a Professional GUI Client for DynamoDB
Start your 7-day free trial today
Product Features
DynamoDB Tools
- SSH GUI Client
- Chat With Cloud
- MongoDB GUI Client
- AWS Cost Monitoring
- DynamoDB Query Builder
- DynamoDB Code Examples
- DynamoDB Node.js Queries
- DynamoDB JSON Converter
- DynamoDB UUID Generator
- DynamoDB Local Admin GUI
- DynamoDB Pricing Calculator
- DynamoDB Single-Table Design
- Best DynamoDB GUI Clients
- Dynobase vs DynoTable