Разница между реализацией интерфейса newObject [] {... parameters ..} и PreparedStatementSetter в Spring JDB C? - PullRequest
1 голос
/ 11 февраля 2020

В чем разница между передачей параметров в операторы SQL с использованием нового объекта [] { parameters } и с использованием интерфейса PreparedStatementSetter?

Оба предоставляют значения для заполнителей в нашем sql оператор запроса, так зачем нам на самом деле go и предоставлять такую ​​длинную реализацию интерфейса PreparedStatementSetter, когда мы можем просто использовать новый Object [] для передачи параметров ??

1 Ответ

2 голосов
/ 11 февраля 2020

Разница составляет удобство .

query(String sql, Object[] args, int[] argTypes, ...) и query(String sql, Object[] args, ...) - оба удобство методы, которые внутренне вызывают query(String sql, PreparedStatementSetter pss, ...).

Так же, как query(..., RowCallbackHandler rch) и query(..., RowMapper<T> rowMapper) оба являются удобными методами, которые внутренне вызывают query(..., ResultSetExtractor<T> rse).

Удобные методы удобны, потому что они значительно облегчают выполнение общих действий. , Предоставление доступа к базовому методу позволяет также выполнять необычные действия, если в этом возникает необходимость.

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

Большинству людей никогда не понадобятся версии PreparedStatementSetter или ResultSetExtractor, поэтому просто игнорируйте их, но помните, что они существуют, если вам когда-нибудь понадобится.

...