Q1: Эти интерфейсы вместе с RowCallbackHandler
часто используются JdbcTemplate
при постановке в очередь базы данных. Какой интерфейс вы реализуете, как вы его реализуете и какой метод вы используете в JdbcTemplate
, зависит от вашей базы данных и того, какой запрос вы хотите выполнить. Из документа Spring API и некоторых дополнительных комментариев:
RowMapper
Интерфейс, используемый JdbcTemplate для отображения строк ResultSet для каждой строки. Реализации этого интерфейса выполняют фактическую работу по отображению каждой строки в объект результата
т.е. RowMapper
обычно используется для отображения объектов, когда между строкой в базе данных и результирующим объектом есть взаимно-однозначное отношение.
ResultSetExtractor
Объект ResultSetExtractor обычно не имеет состояния и, следовательно, может использоваться повторно
Реализации ResultSetExtractor
обычно создают один объект из нескольких строк, который впоследствии возвращается. Он не имеет состояния, поскольку реализующий класс не сохраняет состояния между вызовами методов.
RowCallbackHandler
Реализации этого интерфейса выполняют фактическую работу по обработке каждой строки [...]. В отличие от ResultSetExtractor, объект RowCallbackHandler обычно имеет состояние: он сохраняет состояние результата внутри объекта, чтобы быть доступным для последующей проверки.
RowCallbackHandler
используется для запросов, таких как обновление или удаление строк. Кроме того, он используется, когда вам нужно отслеживать состояние через ResultSet
, например, количество строк в RowCountCallbackHandler .