1

我正在实施一个Spring+MSSQL Server 2008应用程序。我使用SimpleJDBCCallAPI 来执行存储过程并检索结果。

对于具有单表结果的存储过程,它工作正常,但我不知道如何将它用于具有多表结果的过程。

示例程序主体:

多表结果

    SELECT * FROM TABLE1
    SELECT * FROM TABLE2
4

1 回答 1

0

我是最无知的,它确实有效!您可以指定两个结果集,每个结果集都有自己的映射器。在代码中它看起来像这样:

SimpleJdbcCall call = new SimpleJdbcCall(this.jdbc)
           .withProcedureName("get_users3")
           .returningResultSet("rs1", new ParameterizedRowMapper<Object[]>()
           {
              @Override
              public Object[] mapRow(ResultSet rs, int rowNum) throws SQLException
              {
                 return new Object[] { rowNum, rs.getInt(1), rs.getString(2) };
              }
           })
           .returningResultSet("rs2", new ParameterizedRowMapper<Object[]>()
           {
              @Override
              public Object[] mapRow(ResultSet rs, int rowNum) throws SQLException
              {
                 return new Object[] { rowNum, rs.getInt(1), rs.getString(2) };
              }
           });

  Map<String, Object> res = call.execute();
  assertNotNull(res.get("rs1"));
  assertNotNull(res.get("rs2"));
  List<Object[]> l1 = (List<Object[]>)res.get("rs1");
  List<Object[]> l2 = (List<Object[]>)res.get("rs2");
于 2013-03-14T07:43:44.873 回答