Biesterfeld: SELECT mit Parameter mit Spring

Beitrag lesen

Hej,

Du wirst wahrscheinlich gebeten, anstatt der Methode JDBCTemplate.query( String sql, Object[] args, RowMapper rowMapper ), die Methode [link:http://static.springframework.org/spring/docs/2.5.x/api/org/springframework/jdbc/core/JdbcTemplate.html#query(java.lang.String,%20org.springframework.jdbc.core.PreparedStatementSetter,%20org.springframework.jdbc.core.RowMapper)@title=JDBCTemplate.query( String sql, PreparedStatementSetter psm, RowMapper rowMapper );] zu verwenden. Dem PreparedStatementSetter musst du ein java.sql.PreparedStatement übergeben, welches die Methode [link:http://java.sun.com/javase/6/docs/api/java/sql/PreparedStatement.html#setObject(int,%20java.lang.Object)@title=setObject( int ParameterIndex, Object x)] kennt.

Ich verstehe nicht, wie ich es verwenden soll. Ich habe keine Connection, mit der ich das Statement vorbereiten kann, da das Connection Handling Spring übernimmt.

Ich hatte auch einen Denkfehler drin: PreparedStatementSetter ist ein Interface, welches du selber, z.B. anonym überschreiben musst. Das PreparedStatement bekommst du durch die Implementierung der Methode [link:http://static.springframework.org/spring/docs/2.5.x/api/org/springframework/jdbc/core/PreparedStatementSetter.html#setValues(java.sql.PreparedStatement)@title=PreparedStatementSetter.setValues( PreparedStatement ps )] übergeben und musst entsprechend nur noch die Werte setzen, also z.B. durch

  
new PreparedStatmentSetter() {  
  void setValues( PreparedStatement ps ) {  
    ps.setObject( 0, kategorie );  
  }  
};  

Oder so ähnlich. Wie gesagt ich kenn mich mit Spring nich aus. Aber dadurch würdest du zumindest den Aufruf der query( String sql, Object[] args, RowMapper rowMapper ) Methode umgehen können, die dir offensichtlich Probleme bereitet.

Beste Grüße
Biesterfeld

--
Art.1: Et es wie et es
Art.2: Et kütt wie et kütt
Art.3: Et hätt noch immer jot jejange
Das Kölsche Grundgesetz