Tulis satu baris data menggunakan Tablestore SDK for Java. Gunakan penulisan kondisional, versi data kustom, dan penghitung atomik untuk operasi penulisan pesanan, pembaruan status, serta pencacahan.
Prasyarat
Instal Tablestore SDK for Java dan inisialisasi klien.
Deskripsi
public PutRowResponse putRow(PutRowRequest putRowRequest) throws TableStoreException, ClientException
Operasi ini menulis atau memperbarui satu baris. Jika baris tersebut sudah ada, parameter condition menentukan apakah operasi akan menimpa, menambahkan, atau menolak penulisan.
Contoh berikut menulis satu baris ke tabel put_row_demo dengan kolom kunci primer id diatur ke row1 dan kolom atribut col1 diatur ke 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"));
PutRowResponse response = client.putRow(new PutRowRequest(rowPutChange));
System.out.println("RequestId: " + response.getRequestId());
System.out.println("Write CU: " + response.getConsumedCapacity().getCapacityUnit().getWriteCapacityUnit());
Parameter utama:
-
tableName (wajib): Nama tabel tempat data akan ditulis.
-
primaryKey (wajib): Kunci primer. Nama dan nilai kolom harus sesuai dengan skema kunci primer tabel.
-
columnsToPut (opsional): Daftar kolom atribut. Tambahkan kolom dengan memanggil
addColumn.
Parameter
PutRowRequest membungkus objek RowPutChange yang berisi parameter penulisan:
|
Nama |
Tipe |
Deskripsi |
|
tableName (wajib) |
String |
Nama tabel tempat data akan ditulis. |
|
primaryKey (wajib) |
PrimaryKey |
Kunci primer, termasuk nama dan nilai kolomnya.
|
|
columnsToPut (opsional) |
List<Column> |
Daftar kolom atribut. Tambahkan kolom satu per satu dengan memanggil
|
|
condition (opsional) |
Condition |
Kondisi penulisan. Secara default, penulisan akan menimpa baris yang sudah ada. Untuk informasi selengkapnya, lihat Conditional write. |
|
returnType (opsional) |
ReturnType |
Tipe respons yang dikembalikan, diatur dengan
|
Contoh
Menulis beberapa kolom atribut
Contoh ini menunjukkan dua pendekatan: memanggil addColumn untuk setiap kolom, atau meneruskan List<Column> yang telah disiapkan dalam satu pemanggilan.
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);
// Opsi 1: Tambahkan kolom satu per satu dengan addColumn
rowPutChange.addColumn("name", ColumnValue.fromString("Alice"));
rowPutChange.addColumn("age", ColumnValue.fromLong(30));
rowPutChange.addColumn("active", ColumnValue.fromBoolean(true));
// Opsi 2: Teruskan List<Column> dalam satu pemanggilan
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));
Menentukan versi data
Gunakan addColumn(name, value, timestamp) untuk mengatur versi data kustom saat menulis kolom.
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));
Mengembalikan kunci primer untuk kolom auto-increment
Untuk kolom kunci primer auto-increment, atur nilai kolom ke placeholder PrimaryKeyValue.AUTO_INCREMENT—server akan menghasilkan nilai aktual saat penulisan. Untuk mengambil nilai yang dihasilkan dalam respons, panggil setReturnType(ReturnType.RT_PK) sebelum menulis, lalu panggil response.getRow() setelah operasi selesai.
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());