Qual è il modo corretto di richiamare le stored procedure utilizzando il modello JDBC Spring moderno (circa 2012)?Modello JDBC primaverile per la chiamata di stored procedure
Di ', ho una stored procedure che dichiara sia IN
e OUT
parametri, qualcosa di simile:
mypkg.doSomething(
id OUT int,
name IN String,
date IN Date
)
mi sono imbattuto CallableStatementCreator
approcci basati in cui dobbiamo registrare in modo esplicito IN
e OUT
parametri. Si consideri il seguente metodo in JdbcTemplate
classe:
public Map<String, Object> call(CallableStatementCreator csc, List<SqlParameter> declaredParameters)
Naturalmente, so che posso utilizzarlo in questo modo:
List<SqlParameter> declaredParameters = new ArrayList<SqlParameter>();
declaredParameters.add(new SqlOutParameter("id", Types.INTEGER));
declaredParameters.add(new SqlParameter("name", Types.VARCHAR));
declaredParameters.add(new SqlParameter("date", Types.DATE));
this.jdbcTemplate.call(new CallableStatementCreator() {
@Override
CallableStatement createCallableStatement(Connection con) throws SQLException {
CallableStatement stmnt = con.createCall("{mypkg.doSomething(?, ?, ?)}");
stmnt.registerOutParameter("id", Types.INTEGER);
stmnt.setString("name", "<name>");
stmnt.setDate("date", <date>);
return stmnt;
}
}, declaredParameters);
Qual è lo scopo della declaredParameters
quando sto già li si registrano nel mio Implementazione csc
? In altre parole, perché dovrei passare in un csc
quando la primavera può semplicemente fare con.prepareCall(sql)
internamente? Fondamentalmente, non posso passare in uno di essi invece di entrambi?
Oppure, c'è un modo molto migliore per chiamare stored procedure (utilizzando Spring JDBC Template) rispetto a quello che ho trovato finora?
Nota: È possibile trovare molte domande che sembrano avere un titolo simile ma non sono le stesse di questo.
Posso vedere che questa domanda è abbastanza popolare ora e sono già passati più di 2 anni da quando è stato chiesto. Se qualcuno pensa che ci sia un modo ancora più bello di chiamare stored procedure ora che Spring 4 è fuori, si prega di inviare una risposta o suggerire una modifica. – adarshr