2011-08-31 11 views

Odpowiedz

23

Z całą pewnością tak. Ten przykład jest prosto ze źródła 3,0 docs (ale to samo w 2. *):

String lastName = this.jdbcTemplate.queryForObject( 
     "select last_name from t_actor where id = ?", 
     String.class, 1212L); 

Jak widać, silnie sprzyja przygotowany oświadczenia (które należy używając za kulisami dla Ciebie): określasz parametry z symbolami zastępczymi (?) i dostarczasz tablicę obiektów do wypełnienia parametrów. (Ostatnim parametrem jest typ oczekiwanego wyniku, ale nie jest to istotne dla tego pytania.)

Można również użyć parametru NamedParameterJdbcTemplate i podać parametry w postaci Map, która jest prawdopodobnie mniej wydajna, ale zdecydowanie bardziej mnemoniczna.

+1

Fajne - najważniejsze jest to, że użycie sparametryzowanych metod w Spring API zdecydowanie odwzorowuje sparametryzowane metody w Java PreparedStatements w taki sposób, że ochrona jest zachowana. – Brabster

+0

Powinny to zrobić; Wiosna polega na implementowaniu Best Practices w bardziej wygodny sposób, a użycie PreparedStatement było zalecane od ... no cóż, pamiętam, że doradzono mu w pierwszej wersji JDBC, którą spotkałem w Javie 1.1, mimo że jest raczej wybredny. (Nie wiem, czy wszystkie sterowniki JDBC dobrze to rozumieją, ale jeśli tego nie zrobię, uznałbym to za powód, dla którego go nie używam). –

Powiązane problemy