Java'da DynamoDB GetItem (AWS SDK v2)

GetItem tek bir öğeyi tam birincil anahtarıyla okur. Java 2.x için AWS SDK'da bir GetItemRequest oluşturur ve bir DynamoDbClient üzerinde getItem'i çağırırsınız; her anahtar değeri, türlü oluşturucuyla oluşturulan bir AttributeValue'dur (dizeler için .s(...), sayılar için .n(...)).

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.GetItemRequest;

public class GetItemExample {
    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("#proj0", "Artist");
            names.put("#proj1", "SongTitle");
            names.put("#proj2", "AlbumTitle");
            names.put("#proj3", "Year");

            GetItemRequest request = GetItemRequest.builder()
                    .tableName("Music")
                    .key(key)
                    .projectionExpression("#proj0, #proj1, #proj2, #proj3")
                    .expressionAttributeNames(names)
                    .build();

            Map<String, AttributeValue> item = ddb.getItem(request).item();
            if (item.isEmpty()) {
                System.out.println("Item not found");
            } else {
                System.out.println(item);
            }
        } catch (DynamoDbException e) {
            System.err.println(e.getMessage());
        }
    }
}

AttributeValue eşlemeleri yerine düz Java nesnelerini mi tercih edersiniz? DynamoDB Enhanced Client (software.amazon.awssdk.enhanced.dynamodb), aynı düşük seviyeli çağrıların üzerinde öğeleri açıklamalı bean sınıflarına eşler.

Açıklama

  • tableName — okunacak tablo.
  • keyher birincil anahtar özniteliğini içermelidir: basit bir anahtar için yalnızca bölüm anahtarı ya da bileşik bir anahtar için bölüm ve sıralama anahtarı. GetItem eksik bir anahtarı kabul etmez.
  • projectionExpression — isteğe bağlı; hangi özniteliklerin geri döneceğini sınırlar (okuma maliyetini değil, bant genişliğini azaltır). Yansıtılan her öznitelik expressionAttributeNames aracılığıyla bir takma ad alır (#proj0#proj3); bu da Year gibi ayrılmış sözcükleri güvende tutar.
  • item() — hiçbir öğe eşleşmediğinde yanıt bir boş eşleme taşır (asla null değil); kullanmadan önce isEmpty() ile kontrol edin.
  • Varsayılan olarak okumalar nihai tutarlıdır. Güçlü tutarlı bir okuma için .consistentRead(true) ekleyin (2× RCU'ya mal olur, yalnızca temel tablo).
  • İstemci AutoCloseable'dır — try-with-resources bloğu HTTP bağlantılarını serbest bırakır.

Görsel olarak yapın

Projeksiyonu veya koşullu bir okumayı elle mi oluşturuyorsunuz? İfadeyi bir araya getirmek ve tam ProjectionExpression / ExpressionAttributeNames değerlerini kopyalamak için ücretsiz DynamoDB Expression Builder'ı kullanın.

Tabloları bir grafik arayüzde (GUI) gezinmek ve GetItem çalıştırmak için — anahtar formu, sonuç ızgarası, üretilen kodu tek tıkla kopyalama — DynoTable'ı indirin.

İlgili örnekler

References

En son 2026-07-13 tarihinde yukarıda bağlantısı verilen resmi AWS belgelerine karşı doğrulandı.

Console olmadan DynamoDB ile çalışın

DynoTable, DynamoDB için hızlı bir masaüstü istemcisidir — tablolara göz atın, SQL tarzı sorgular çalıştırın ve item'ları yerel olarak düzenleyin.