PreparedStatement 中的存储过程参数名称而不是参数索引?

Stored procedure parameter names in a PreparedStatement instead of parameter indexes?

现在,当我在 PreparedStatement 中调用存储过程时,我必须像这样将参数添加到 CallableStatement

procStmt.setString(1, "a");
procStmt.setString(2, "b");
procStmt.setString(3, "c");
// etc...

一旦您在调用的存储过程中有大约 50 多个参数并且并非所有参数都是必需的,这就会变得非常乏味。有没有办法像这样:

procStmt.setString("myParameter", "a");
procStmt.setString("yourParameter", "b");
procStmt.setString("ourParameter", "c");
// etc...

这样参数会直接传递给需要它们的参数,您不必担心通过参数发送的顺序或需要发送空 String 对象等

JDBC 不支持命名参数。如果您使用 Spring,我建议使用 Spring JDBC 模板 NamedParameterJdbcTemplate。它可以在没有整个 IoC 容器的情况下使用。

你为什么要使用 PreparedStatement..你可以使用 CallableStatement 调用存储过程,Callable Statement 提供了通过参数名称设置值的选项...

请参考http://docs.oracle.com/javase/7/docs/api/java/sql/CallableStatement.html#setString(java.lang.String,%20java.lang.String)