JdbcTemplate "queryForObject" и "query" устарели в Spring. Чем его следует заменить?

Запрос объекта,

Student student = return jdbcTemplate.queryForObject("select * from student_id = ?", new Object[] { studentId }, studentRowMapper);

Для запроса,

List<Student> students = return jdbcTemplate.query("select * from class_room_id = ?", new Object[] { classRoomId }, studentRowMapper);

И jdbcTemplate.queryForObject, и jdbcTemplate.query устарели в весенней загрузке 2.4.X и выше.

Тот, у которого аргумент varargs вместо Object[]. Это также объясняется в документации @depracted. См. docs.spring.io/spring-framework/docs/current/javadoc-api/org‌​/… , а также объяснение в документации по обновлению github.com/spring-projects/spring-framework/wiki/ …

M. Deinum 15.12.2020 07:39
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
22
1
43 173
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Как объясняется в javadoc класса, а также в руководстве по обновлению/миграции , объясняется, что вы должны использовать метод varargs.

jdbcTemplate.queryForObject("select * from student_id = ?", studentRowMapper, studentId);

и

List<Student> students = return jdbcTemplate.query("select * from class_room_id = ?", studentRowMapper, classRoomId);

Вы можете просто изменить порядок массива Object[] и преобразователя. Этот синтаксис поддерживается в текущей версии. Таким образом, ваш код будет:

Student student = return jdbcTemplate.queryForObject("select * from student_id = ?", 
studentRowMapper, new Object[] { studentId });

и

List<Student> students = return jdbcTemplate.query("select * from class_room_id = ?", 
studentRowMapper, new Object[] { classRoomId });

Вы можете увидеть документ этого метода здесь.

Вы можете упростить это, удалив new Object[] { ... } вокруг параметра, так как это параметр varargs.

Mark Rotteveel 02.09.2022 14:54

Object[] теперь устарел, разработчикам следует использовать подход varargs, см. docs.spring.io/spring-framework/docs/current/javadoc-api/org‌​/…

patrick.holzer 08.05.2023 12:10

Другие вопросы по теме