当前位置: 代码迷 >> java >> 如何从SimpleJdbcCall中的#result-set-1获取值 #result-set-1具有变量
  详细解决方案

如何从SimpleJdbcCall中的#result-set-1获取值 #result-set-1具有变量

热度:105   发布时间:2023-07-17 20:07:32.0

执行SimpleJdbcCall时,我得到两个参数#result-set-1,#update-count-1

MapSqlParameterSource parameterSource = new MapSqlParameterSource();
parameterSource.addValue("name", "something");
Map<String, Object> resultFromProcedure = cstmt.execute(parameterSource);

#result-set-1具有变量

[{
 id = 123,
 name = "something",
 accountnumber = 123456,
 balance = 789999
}]

一切都很好,直到我尝试访问

resultFromProcedure.get("accountnumber")

哪个越来越空。 问题是如何访问#result-set-1中的值

如果我理解正确; Map<String, Object> resultFromProcedure由2个条目组成,这些条目具有键#result-set-1#update-count-1

#result-set-1的对象是具有4个成员变量的对象。 (如果它是一个字符串,那么您需要将Json转换为Java对象( ))

因此,您对resultFromProcedure.get("accountnumber")调用正尝试使用键accountnumber来获取对象,但映射不包含该键。 您需要首先获取#result-set-1的对象,例如

SomeDTO someDTO = resultFromProcedure.get("#result-set-1");

那你可以打电话

someDTO.getAccountNumber();

由于可能有多个结果集,因此SimpleJdbcCall会在另一个标记为“#result-set-1”的映射中的arraylist中返回一个对象。 要访问其中的值,请尝试以下操作:

ArrayList arrayList = new ArrayList();
arrayList = (ArrayList) resultFromProcedure.get("#result-set-1");
Map resultMap = (Map) arrayList.get(0);

System.out.println("Account Number: " + resultMap.get("accountnumber"));
  相关解决方案