OBKV-Table Javaクライアントは、単一行データの削除と一括データの削除をサポートしています。業務の要件に応じて、適切なインターフェースを選択してデータを削除できます。
削除をサポートするインターフェース
ObTableClientで削除が可能なインターフェースは以下のとおりです。
インターフェース |
説明 |
|---|---|
Delete delete(String tableName) |
1行のデータを削除します。削除条件を設定できます。 |
削除例
前提条件
削除する前に、以下の準備が必要です:
- ObTableClientは初期化済みであること。
- データベースにリレーショナルテーブルが作成されていること。説明を容易にするため、以下のリレーショナルテーブルを用いて説明します:
CREATE TABLE `employees` ( `employeeId` int(11) NOT NULL, `name` varchar(50) DEFAULT NULL, `department` varchar(50) DEFAULT NULL, `position` varchar(50) DEFAULT NULL, `workYear` int(11) DEFAULT NULL, `comment` varchar(50) DEFAULT NULL, PRIMARY KEY (`employeeId`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
単一行の削除
delete
サンプルコードは、主キー employeeId が 1001 のデータ行を削除します。
// データベースに以下のデータが既に存在することを仮定します
/*
+------------+----------+------------+----------+----------+---------+
| employeeId | name | department | position | workYear | comment |
+------------+----------+------------+----------+----------+---------+
| 1001 | zhangsan | R&D | dev | 10 | NULL |
+------------+----------+------------+----------+----------+---------+
*/
private static void deleteRow(ObTableClient obkvHandle) throws Exception {
Row rowKey = row().add(colVal("employeeId", 1001));
obkvHandle.delete("employees")
.setRowKey(rowKey)
.execute();
}
サンプルコードは、主キー employeeId が 1001 で workYear が 3 以上の場合、その行を削除します。
// データベースに以下のデータが既に存在することを仮定します
/*
+------------+----------+------------+----------+----------+---------+
| employeeId | name | department | position | workYear | comment |
+------------+----------+------------+----------+----------+---------+
| 1001 | zhangsan | R&D | dev | 10 | NULL |
+------------+----------+------------+----------+----------+---------+
*/
private static void deleteRowWithFilter(ObTableClient obkvHandle) throws Exception {
Row rowKey = row().add(colVal("employeeId", 1001));
ObTableValueFilter filter = compareVal(ObCompareOp.GE, "workYear", 3);
obkvHandle.delete("employees")
.setRowKey(rowKey)
.setFilter(filter)
.execute();
}
バッチ削除
batchDelete
この例では、主キーemployeeIdが1001と1002の2行を削除します。
// データベースにはすでに以下のデータが存在すると仮定します。
/*
+------------+----------+------------+----------+----------+---------+
| employeeId | name | department | position | workYear | comment |
+------------+----------+------------+----------+----------+---------+
| 1001 | zhangsan | R&D | dev | 10 | NULL |
| 1002 | lisi | R&D | dev | 10 | NULL |
+------------+----------+------------+----------+----------+---------+
*/
private static void batchDeleteRow(ObTableClient obkvHandle) throws Exception {
Row rowKey1 = row().add(colVal("employeeId", 1001));
Row rowKey2 = row().add(colVal("employeeId", 1002));
Delete deleteOp1 = delete().setRowKey(rowKey1);
Delete deleteOp2 = delete().setRowKey(rowKey2);
BatchOperationResult res = obkvHandle.batchOperation("employees")
.addOperation(deleteOp1,deleteOp2)
.execute();
System.out.println(res.hasError());
}