Utilisez le SDK Tablestore pour Java pour écrire ou mettre à jour une ligne dans une table de modèle Wide Column.
Prérequis
Installez le SDK Tablestore pour Java et initialisez le client.
Description
Appelez la méthode putRow pour écrire des colonnes d'attribut dans une ligne identifiée par sa clé primaire. Si la ligne existe déjà, Tablestore ajoute ou écrase les versions correspondantes de la colonne d'attribut. Vous pouvez utiliser le paramètre condition pour contrôler l'exécution de l'écriture.
public PutRowResponse putRow(PutRowRequest putRowRequest) throws TableStoreException, ClientException
L'exemple suivant écrit une ligne dans la table put_row_demo avec la colonne de clé primaire id définie sur row1 et la colonne d'attribut col1 définie sur val1.
String tableName = "put_row_demo";
PrimaryKeyBuilder primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
primaryKeyBuilder.addPrimaryKeyColumn("id", PrimaryKeyValue.fromString("row1"));
PrimaryKey primaryKey = primaryKeyBuilder.build();
RowPutChange rowPutChange = new RowPutChange(tableName, primaryKey);
rowPutChange.addColumn("col1", ColumnValue.fromString("val1"));
client.putRow(new PutRowRequest(rowPutChange));
Paramètres
L'objet PutRowRequest contient les paramètres suivants.
|
Nom |
Type |
Description |
|
rowChange (obligatoire) |
|
Les configurations pour l'écriture d'une ligne. |
|
transactionId (facultatif) |
|
L'ID de transaction locale. Définissez ce paramètre uniquement lorsque vous écrivez des données dans une transaction locale. Pour savoir comment obtenir et utiliser cet ID, consultez la rubrique Utiliser des transactions locales. |
Modification de ligne
Le paramètre rowChange est de type RowPutChange et contient les paramètres suivants.
|
Nom |
Type |
Description |
|
tableName (obligatoire) |
|
Le nom de la table. |
|
primaryKey (obligatoire) |
|
La clé primaire de la ligne. Les noms, l'ordre et les types des colonnes de clé primaire doivent correspondre au schéma de la table. Les colonnes de clé primaire prennent en charge les types |
|
columnsToPut (facultatif) |
|
Les colonnes d'attribut à écrire. Appelez plusieurs fois la méthode |
|
condition (facultatif) |
|
La condition d'écriture. Par défaut, Tablestore ne vérifie pas si la ligne existe. Pour savoir comment configurer la condition, consultez la rubrique Utiliser des mises à jour conditionnelles. |
|
returnType (facultatif) |
|
Le type de retour. La valeur par défaut est |
Colonnes d'attribut
Chaque élément du tableau rowChange.columnsToPut[] est de type Column et contient les paramètres suivants.
|
Nom |
Type |
Description |
|
name (obligatoire) |
|
Le nom de la colonne d'attribut. |
|
value (obligatoire) |
|
La valeur de la colonne d'attribut. Les types pris en charge sont |
|
timestamp (facultatif) |
|
Le numéro de version des données. Unité : millisecondes. Si vous ne spécifiez pas ce paramètre, le serveur génère la valeur. |
Exemples
Écrire plusieurs colonnes d'attribut
Cet exemple présente les deux approches : appeler la méthode addColumn pour chaque colonne, ou passer une liste List<Column> préparée en un seul appel.
String tableName = "put_row_demo";
PrimaryKeyBuilder primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
primaryKeyBuilder.addPrimaryKeyColumn("id", PrimaryKeyValue.fromString("row2"));
PrimaryKey primaryKey = primaryKeyBuilder.build();
RowPutChange rowPutChange = new RowPutChange(tableName, primaryKey);
// Option 1: Add columns one at a time with addColumn
rowPutChange.addColumn("name", ColumnValue.fromString("Alice"));
rowPutChange.addColumn("age", ColumnValue.fromLong(30));
rowPutChange.addColumn("active", ColumnValue.fromBoolean(true));
// Option 2: Pass a List<Column> in a single call
List<Column> columns = new ArrayList<>();
columns.add(new Column("score", ColumnValue.fromDouble(95.5)));
columns.add(new Column("city", ColumnValue.fromString("Hangzhou")));
rowPutChange.addColumns(columns);
client.putRow(new PutRowRequest(rowPutChange));
Spécifier la version des données
Utilisez la méthode addColumn(name, value, timestamp) pour définir une version de données personnalisée lors de l'écriture de la colonne.
String tableName = "put_row_demo";
PrimaryKeyBuilder primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
primaryKeyBuilder.addPrimaryKeyColumn("id", PrimaryKeyValue.fromString("row3"));
PrimaryKey primaryKey = primaryKeyBuilder.build();
RowPutChange rowPutChange = new RowPutChange(tableName, primaryKey);
long timestamp = System.currentTimeMillis();
rowPutChange.addColumn("col1", ColumnValue.fromString("val1"), timestamp);
client.putRow(new PutRowRequest(rowPutChange));
Renvoyer la clé primaire pour une colonne à incrémentation automatique
Pour une colonne de clé primaire à incrémentation automatique, définissez la valeur de la colonne sur l'espace réservé PrimaryKeyValue.AUTO_INCREMENT ; le serveur génère la valeur réelle au moment de l'écriture. Pour récupérer la valeur générée dans la réponse, appelez la méthode setReturnType(ReturnType.RT_PK) avant l'écriture, puis appelez la méthode response.getRow() après le retour de l'opération d'écriture.
String tableName = "put_row_auto_inc_demo";
PrimaryKeyBuilder primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
primaryKeyBuilder.addPrimaryKeyColumn("partition_key", PrimaryKeyValue.fromString("pk1"));
primaryKeyBuilder.addPrimaryKeyColumn("auto_id", PrimaryKeyValue.AUTO_INCREMENT);
PrimaryKey primaryKey = primaryKeyBuilder.build();
RowPutChange rowPutChange = new RowPutChange(tableName, primaryKey);
rowPutChange.addColumn("payload", ColumnValue.fromString("hello"));
rowPutChange.setReturnType(ReturnType.RT_PK);
PutRowResponse response = client.putRow(new PutRowRequest(rowPutChange));
Row returnedRow = response.getRow();
System.out.println("Returned PK: " + returnedRow.getPrimaryKey());