JOOQ:一次删除记录列表?

时间:2013-10-03 09:47:52

标签: java sql jooq

如何从List中的单个查询中删除JOOQ条记录?这可以通过JOOQ API实现吗?或者我必须逐个删除记录,只需获取一个记录消息查询等等?

1 个答案:

答案 0 :(得分:3)

是的,你可以做到!

使用批处理语句

您可以通过

批量删除记录

示例:

MyTableRecord record1 = //...
MyTableRecord record2 = //...
DSL.using(configuration).batchDelete(record1, record2).execute();

这将生成一个JDBC批处理语句,其执行速度比单个删除快得多。

使用带有IN谓词的单个DELETE语句

另一个选择是创建一个DELETE语句:

DSLContext create = DSL.using(configuration);
// This intermediate result is only used to extract ID values later on
Result<MyTableRecord> result = create.newResult(MY_TABLE);
result.add(record1);
result.add(record2);

create.delete(MY_TABLE)
      .where(MY_TABLE.ID.in(result.getValues(MY_TABLE.ID))
      .execute();