Lorsque vous mettez à jour une colonne spécifique, vous devez spécifier la colonne à mettre à jour. Supposons que nous ayons cette table :
Supposons maintenant que nous voulions mettre à jour le archives colonne. Vous devez spécifier la colonne dans votre code. Ici, nous modifions la colonne archives de l'article qui correspond à la clé de l'article. Fermé (mise à jour d'une seule colonne). Remarquez que nous spécifions le nom de la colonne en utilisant l'attribut HashMap objet nommé valeurs actualisées .
// Archives an item based on the key
public String archiveItem(String id){
DynamoDbClient ddb = getClient();
HashMap<String,AttributeValue> itemKey = new HashMap<String,AttributeValue>();
itemKey.put("id", AttributeValue.builder()
.s(id)
.build());
HashMap<String, AttributeValueUpdate> updatedValues =
new HashMap<String,AttributeValueUpdate>();
// Update the column specified by name with updatedVal
updatedValues.put("archive", AttributeValueUpdate.builder()
.value(AttributeValue.builder()
.s("Closed").build())
.action(AttributeAction.PUT)
.build());
UpdateItemRequest request = UpdateItemRequest.builder()
.tableName("Work")
.key(itemKey)
.attributeUpdates(updatedValues)
.build();
try {
ddb.updateItem(request);
return"The item was successfully archived";
NOTE : Il ne s'agit pas du client amélioré.
Ce code est tiré du tutoriel AWS qui montre comment construire une application web Java en utilisant Spring Boot. Tutoriel complet ici :
Création du tracker d'éléments de l'application web DynamoDB
Pour mettre à jour une seule colonne à l'aide du client étendu, appelez la commande Méthode du tableau . Cela renvoie un instance de DynamoDbTable . Vous pouvez maintenant appeler le updateItem méthode.
Voici la logique qui permet de mettre à jour le archives en utilisant le Enhanced Client. Remarquez que vous obtenez un Travail appelle son objet setArchive puis passer le Travail objet. workTable.updateItem(r->r.item(work)) ;
Code Java :
// Update the archive column by using the Enhanced Client.
public String archiveItemEC(String id) {
DynamoDbClient ddb = getClient();
try {
DynamoDbEnhancedClient enhancedClient = DynamoDbEnhancedClient.builder()
.dynamoDbClient(getClient())
.build();
DynamoDbTable<Work> workTable = enhancedClient.table("Work", TableSchema.fromBean(Work.class));
//Get the Key object.
Key key = Key.builder()
.partitionValue(id)
.build();
// Get the item by using the key.
Work work = workTable.getItem(r->r.key(key));
work.setArchive("Closed");
workTable.updateItem(r->r.item(work));
return"The item was successfully archived";
} catch (DynamoDbException e) {
System.err.println(e.getMessage());
System.exit(1);
}
return "";
}
Cette réponse montre les deux façons de mettre à jour une seule colonne dans une table DynamoDB. Le tutoriel ci-dessus montre maintenant cette méthode.