如何使用 jdbi 返回已删除的行?

问题描述

如何使用 jdbi 返回已删除的行?例如,我想做这样的事情:

public List<User> deleteAndReturnUsers() {
  return jdbi.withHandle(handle -> {
    return handle.createquery("DELETE FROM mytable where id = :id")
      .bind("id","someid")
      .map(new UserMapper())
      .list();
  });
}

解决方法

Postgresql 有一个 returning 关键字...

https://dbfiddle.uk/?rdbms=postgres_13&fiddle=25d284309745e40c8ea29945481d1aa2

DELETE FROM data WHERE val >= 2 RETURNING *;

然后,您可以像执行普通的 SELECT 语句一样执行该查询,并返回结果集;包含已删除的记录。