Что такое RowMapper, ResultSetExtractor, переменные связывания и типы запросов? - PullRequest
4 голосов
/ 07 декабря 2011

Я знаю, как использовать JDBC Template и DAO, но у меня все еще есть вопросы по этому поводу:

  1. Что такое RowMapper и ResultSetExtractor?
  2. переменная связывания?
  3. Являются ли запросы типом List?

1 Ответ

14 голосов
/ 10 декабря 2011

Q1: Эти интерфейсы вместе с RowCallbackHandler часто используются JdbcTemplate при постановке в очередь базы данных. Какой интерфейс вы реализуете, как вы его реализуете и какой метод вы используете в JdbcTemplate, зависит от вашей базы данных и того, какой запрос вы хотите выполнить. Из документа Spring API и некоторых дополнительных комментариев:

RowMapper

Интерфейс, используемый JdbcTemplate для отображения строк ResultSet для каждой строки. Реализации этого интерфейса выполняют фактическую работу по отображению каждой строки в объект результата

т.е. RowMapper обычно используется для отображения объектов, когда между строкой в ​​базе данных и результирующим объектом есть взаимно-однозначное отношение.

ResultSetExtractor

Объект ResultSetExtractor обычно не имеет состояния и, следовательно, может использоваться повторно

Реализации ResultSetExtractor обычно создают один объект из нескольких строк, который впоследствии возвращается. Он не имеет состояния, поскольку реализующий класс не сохраняет состояния между вызовами методов.

RowCallbackHandler

Реализации этого интерфейса выполняют фактическую работу по обработке каждой строки [...]. В отличие от ResultSetExtractor, объект RowCallbackHandler обычно имеет состояние: он сохраняет состояние результата внутри объекта, чтобы быть доступным для последующей проверки.

RowCallbackHandler используется для запросов, таких как обновление или удаление строк. Кроме того, он используется, когда вам нужно отслеживать состояние через ResultSet, например, количество строк в RowCountCallbackHandler .

...