Spring Framework и работа с базами данных: NamedParameterJdbcTemplate

В своём предыдущем посте я описал работу с JdbcTemplate на примере простого DAO-класса. Возможностей JdbcTemplate вполне хватает, что бы сделать работу с базами данными немного проще. Но использование вопросительного знака в качестве плейсхолдера для параметра запроса не всегда удобно, особенно, когда речь идёт о работе с таблицами, имеющими большое количество колонок. В этом случае удобнее будет использовать класс NamedParameterJdbcTemplate, который позволяет использовать именованные параметры в SQL-запросах.

Хороший пример, в котором может пригодиться NamedParameterJdbcTemplate — удаление списка записей по идентификаторам. Добавим такой метод в интерфейс:

Теперь напишем тест, который должен будет пройти новый метод:

Займёмся реализацией. У NamedParameterJdbcTemplate есть три конструктора: без аргументов, с аргументом типа javax.sql.DataSource или с аргументом типа org.springframework.jdbc.core.JdbcTemplate. Добавим нашему DAO-классу всё необходимое:

В качестве контейнера свойств запроса можно так же передавать объект одного из классов, реализующих SqlParameterSource.