sql >> Database teknologi >  >> RDS >> Sqlserver

Hvordan får man flere tabelresultater af en lagret procedure ved hjælp af SimpleJDBCCall om foråret?

Jeg var mest uvidende, det virker faktisk! Du kan angive begge resultatsæt med hver sin mapper. I koden ser det sådan ud:

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");



  1. postgres:Hvad laver forespørgslen 'vælg * fra bruger' egentlig?

  2. Hvorfor er ydeevnen af ​​MySQL-forespørgsler så dårlig, når du bruger et CHAR/VARCHAR-indeks?

  3. Bedste praksis for fejlhåndtering ved brug af PDO

  4. $stmt->close() vs $stmt->free_result()