SimpleJdbcCall 中的多个输出参数

And*_*Man 5 java spring spring-jdbc spring-boot

在 Java spring boot 框架中,尝试使用以下方法消费 Store 过程

 jdbcTemplate.setDataSource(dataSource);

       SimpleJdbcCall simpleJdbcCall = new SimpleJdbcCall(jdbcTemplate)
                                           .withSchemaName("abc")
                                           .withFunctionName("proname")
                                           .addDeclaredParameter(new
 SqlOutParameter("",""));
        Map<String, Object> map= new HashMap<>();
         map.put("a",a);
        map.put("b",b);
        map.put("c",c);
        map.put("d",d);

 SqlParameterSource in = new MapSqlParameterSource(map);
 Map<String, Object> out = simpleJdbcCall.execute(in);
Run Code Online (Sandbox Code Playgroud)

但我的程序也有参数这里是我的程序

function proname(z varchar2,
                                            a varchar2,
                                            b varchar2,
                                            c varchar2,
                                            d in out number,
                                            e out number,
                                            f out varchar2,
                                            g out varchar2)
Run Code Online (Sandbox Code Playgroud)

该过程也有输出参数,如上面的代码所示,问题是如何在简单的 JDBC 调用中提到多个输出参数(注意多个)????

N00*_*mer 0

out您可以按照以下教程从存储过程接受多个参数。这应该会向您简要介绍如何实现这一点:

  1. Spring JDBC 与存储过程
  2. Spring JDBC 与简单 JDBC 调用

从上述文章中获取示例代码,这就是您调用执行存储过程的方式:

SimpleJdbcCall jdbcCall = new SimpleJdbcCall(dataSource).withProcedureName("getRecord");
SqlParameterSource in = new MapSqlParameterSource().addValue("in_id", id);
Map<String, Object> out = jdbcCall.execute(in);
Run Code Online (Sandbox Code Playgroud)

在同一示例中,一旦获得所需的输出,您将从OUT以下格式的响应中获取参数:

Student student = new Student();
student.setId(id);
student.setName((String) out.get("out_name"));
student.setAge((Integer) out.get("out_age"));
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助!