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