Как вернуть удаленные строки с помощью jdbi?

#java #sql #postgresql #jdbc #jdbi

#java #sql #postgresql #jdbc #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();
  });
}
 

Ответ №1:

В Postgresql есть returning ключевое слово…

https://dbfiddle.uk/?rdbms=postgres_13amp;fiddle=25d284309745e40c8ea29945481d1aa2

 DELETE FROM data WHERE val >= 2 RETURNING *;
 

Затем вы можете выполнить этот запрос так же, как и обычный SELECT оператор, и получить обратно набор результатов; содержащий удаленные записи.