OBKV-Table Javaクライアントは、単一行削除と一括削除をサポートしています。業務要件に応じて適切なAPIを選択してください。
削除API
以下のObTableClient APIが削除操作をサポートしています:
API |
説明 |
|---|---|
Delete delete(String tableName) |
一行のデータを削除します。削除条件を設定できます。 |
削除の例
前提条件
データを削除する前に、次のことを確認してください:
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の行を削除します。
// Assume the following data already exists in the database
/*
+------------+----------+------------+----------+----------+---------+
| 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();
}
以下の例では、workYearが3以上の場合にのみ、主キーemployeeIdが1001の行を削除します。
// Assume the following data already exists in the database
/*
+------------+----------+------------+----------+----------+---------+
| 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行のデータを削除します。
// Assume the following data already exists in the database
/*
+------------+----------+------------+----------+----------+---------+
| 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());
}