Java SimpleJdbcCall:未映射存储过程结果

时间:2017-11-15 11:30:29

标签: java database spring-boot

我有以下弹簧启动代码调用存储过程。

     SimpleJdbcCall dbCall = new SimpleJdbcCall(jdbcTemplate)
            .withSchemaName("MySchema")
            .withProcedureName("spName")
            .declareParameters(
                    new SqlParameter("param1", Types.INTEGER),
                    new SqlParameter("param2", Types.TINYINT),
                    new SqlParameter("param3", Types.INTEGER))
            .returningResultSet("some_return_value", (RowMapper<Integer>) (rs, rowNum) -> {
                int id = rs.getInt("columnName");
                System.out.println(id);
                return id;
            });


    MapSqlParameterSource params = new MapSqlParameterSource();
    params.addValue("param1", 12345);
    params.addValue("param2", 2);
    params.addValue("param3", 12345);

    List res = dbCall.executeFunction(List.class, params);

出于测试目的,我尝试获取ID列表。我稍后会添加的其他参数。结果,res变量始终为nullSystem.out.println(id);中的RowMapper在控制台窗口中显示正确的ID。

有人可以解释一下我的代码中有什么问题吗?

更新15/11/2017 我发现如果我将List res = dbCall.executeFunction(List.class, params);更改为Map<String,Object> response = getQACall.execute(params);则可行。任何想法,为什么它不适用于executeFunction

0 个答案:

没有答案