Tablestore SDK for Java を使用して、1 行のデータを書き込みます。条件付き書き込み、カスタムデータバージョン、およびアトミックカウンターを使用して、順序付き書き込み、ステータス更新、およびカウンター操作を実行します。
前提条件
Tablestore SDK for Java をインストールし、クライアントを初期化します。
説明
public PutRowResponse putRow(PutRowRequest putRowRequest) throws TableStoreException, ClientException
1 行を書き込むか、または更新します。行が存在する場合、condition パラメーターが、上書き、追加、または書き込みの拒否を決定します。
次の例では、put_row_demo テーブルに、プライマリキー列 id を row1 に設定し、属性列 col1 を 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());
主なパラメーター:
-
tableName (必須):書き込み先のテーブルの名前。
-
primaryKey (必須):プライマリキー。列名と値は、テーブルのプライマリキースキーマと一致する必要があります。
-
columnsToPut (オプション): 属性列のリストです。
addColumnを呼び出して列を追加します。
パラメーター
PutRowRequest は、書き込みパラメーターを格納する RowPutChange をラップします:
|
名前 |
型 |
説明 |
|
tableName (必須) |
文字列 |
書き込み先のテーブルの名前。 |
|
primaryKey (必須) |
PrimaryKey |
列名と値を含むプライマリキー。
|
|
columnsToPut (任意) |
List<Column> |
属性列のリストです。
|
|
condition (任意) |
Condition |
書き込み条件。デフォルトでは、既存の行を上書きします。詳細については、「条件付き書き込み」をご参照ください。 |
|
returnType (任意) |
ReturnType |
戻り値の型、
|
例
複数の属性列の書き込み
この例では、列ごとに addColumn を呼び出す方法と、準備された List<Column> を 1 回の呼び出しで渡す方法の両方を示します。
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);
// オプション1:addColumnで列を1つずつ追加
rowPutChange.addColumn("name", ColumnValue.fromString("Alice"));
rowPutChange.addColumn("age", ColumnValue.fromLong(30));
rowPutChange.addColumn("active", ColumnValue.fromBoolean(true));
// オプション2:addColumnsでListを一度に渡す
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));
データバージョンの指定
addColumn(name, value, timestamp) を使用して、列を書き込むときにカスタムデータバージョンを設定します。
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));
自動採番プライマリキーの取得
自動インクリメントプライマリキー列では、列の値にプレースホルダー PrimaryKeyValue.AUTO_INCREMENT を設定します。サーバーは書き込み時に実際の値を生成します。レスポンスで生成された値を取得するには、書き込み前に setReturnType(ReturnType.RT_PK) を呼び出し、書き込みが返された後に response.getRow() を呼び出します。
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());