Quelle est la bonne façon d'invoquer des procédures stockées à l'aide du modèle Spring JDBC actuel (vers 2012) ?
Disons que j'ai une procédure stockée qui déclare à la fois IN
et OUT
paramètres, quelque chose comme ça :
mypkg.doSomething(
id OUT int,
name IN String,
date IN Date
)
Je suis tombé sur CallableStatementCreator
où nous devons enregistrer explicitement IN
et OUT
paramètres. Considérons la méthode suivante dans JdbcTemplate
classe :
public Map<String, Object> call(CallableStatementCreator csc, List<SqlParameter> declaredParameters)
Bien sûr, je sais que je peux l'utiliser comme ça :
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);
Quel est le but de declaredParameters
alors que je les enregistre déjà dans mon csc
mise en œuvre ? En d'autres termes, pourquoi aurais-je besoin de passer dans un fichier csc
quand le printemps peut simplement faire con.prepareCall(sql)
en interne ? En gros, ne puis-je pas passer dans l'un ou l'autre au lieu des deux ?
Ou bien, existe-t-il un meilleur moyen d'appeler les procédures stockées (en utilisant Spring JDBC Template) que ce que j'ai rencontré jusqu'à présent ?
Nota: Vous trouverez peut-être de nombreuses questions dont le titre semble similaire, mais qui ne sont pas identiques à celle-ci.
4 votes
Je vois que cette question est assez populaire maintenant et cela fait déjà plus de 2 ans qu'elle a été posée. Si quelqu'un pense qu'il existe une façon encore plus agréable d'appeler les procédures stockées maintenant que Spring 4 est sorti, veuillez poster une réponse ou suggérer une modification.