如何从SimpleJdbcCall中的#result-set-1获取值

时间:2019-02-21 08:03:54

标签: java spring

执行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

中的值

2 个答案:

答案 0 :(得分:0)

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

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

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

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

然后您可以致电

someDTO.getAccountNumber();

答案 1 :(得分:0)

由于可能有多个结果集,因此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"));