我有一个对象列表。
List <ObjList> objList;
列表中的每个对象都有一个ID 我想从表MyTable中删除所有与列表中每个对象的ID匹配的记录 我的列表只是一个POJO而不是可更新的记录。那么有什么方法可以使用batchDelete方法来实现这个目的吗?
batchDelete(UpdatableRecord...)
batchDelete(Collection<? extends UpdatableRecord<?>>)
另外,我想通过传递ID列表从MyTable中获取多个记录或列。
答案 0 :(得分:0)
根据删除的大小,您可能需要考虑更喜欢批量删除(非常大的ID集)或批量删除(中小型ID集)或两者的组合。对于非常大的ID集合,不时提交也是一个好主意。
// Assuming this static import:
import static org.jooq.impl.DSL.*;
using(configuration)
.batch(
deleteFrom(MY_TABLE).where(MY_TABLE.ID.eq((Integer) null)))
.bind(objList
.stream()
.map(o -> new Object[] { o.getId() })
.toArray())
.execute();
using(configuration)
.deleteFrom(MY_TABLE).where(MY_TABLE.ID.in(objList
.stream()
.map(MyObject::getId)
.collect(Collectors.toList())))
.execute();