【问题标题】:JOOQ BatchDelete records for a list of IDs用于 ID 列表的 JOOQ BatchDelete 记录
【发布时间】:2016-09-21 09:58:09
【问题描述】:

我有一个对象列表。

List <ObjList> objList;   

列表中的每个对象都有一个 ID。
我想从 MyTable 表中删除与列表中每个对象的 ID 匹配的所有记录。
我的列表只是一个 POJO,而不是一个可更新的记录。那么有什么方法可以使用 batchDelete 方法来实现吗?

From the JavaDocs

batchDelete(UpdatableRecord...)  
batchDelete(Collection<? extends UpdatableRecord<?>>)

另外,我想通过传递一个 ID 列表从 MyTable 中获取多条记录或列。

【问题讨论】:

    标签: java sql database jooq


    【解决方案1】:

    根据删除的大小,您可能需要考虑首选批量删除(非常大的 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();
    

    【讨论】:

      猜你喜欢
      • 2020-08-04
      • 2018-05-20
      • 2020-05-30
      • 2012-12-31
      • 2021-03-09
      • 2019-04-13
      • 1970-01-01
      • 2018-11-11
      • 1970-01-01
      相关资源
      最近更新 更多