Как реализовать запрос на ОБНОВЛЕНИЕ с ВОЗВРАЩАЕМЫМИ значениями в Spring JDBC

#java #sql-update #spring-jdbc #sql-returning

#java #sql-обновление #spring-jdbc #sql-возврат

Вопрос:

У меня есть запрос на ОБНОВЛЕНИЕ в Java EE, Postgresql, который возвращает 2 значения.

 connection = DriverManager.getConnection(DB_URL, DB_USER, DB_PASSWORD);
            statement = connection.prepareStatement(
                    "UPDATE system.current_orders SET "  
                            "status_id = 3, "  
                            "taken_dt = now(), "  
                            "system_dt = now(), "  
                            "driver_car_id_taken = ?, "  
                            "driver_color_id_taken = ?, "  
                            "WHERE id = ?"  
                            "RETURNING aggregator_id, taxi_name_from"
            );
            statement.setInt(1, driverCarIdTaken);
            statement.setInt(2, driverColorIdTaken);
            statement.setInt(3,orderId);
            resultSet = statement.executeQuery();

            while (resultSet.next()) {
                aggregatorId = resultSet.getInt("aggregator_id");
                token = resultSet.getString("taxi_name_from");
            }
 

как это можно реализовать в Spring JDBC, чтобы получить 2 значения в одном запросе на ОБНОВЛЕНИЕ

Ответ №1:

Как уже показано в коде, оператор SQL работает как SELECT запрос, отсюда и использование executeQuery() .

Поэтому сделайте то же самое, что и с SELECT запросом в Spring JDBC:

За кулисами jdbcTemplate.query(...) создает PreparedStatement и вызывает executeQuery() . Это не что иное, как вспомогательный класс для выполнения этого 1. Очень мощный вспомогательный класс с множеством приятных функций, но это, по сути, все.

1) и для вызова executeUpdate() тоже, или, конечно.