执行SimpleJdbcCall时,我得到两个参数#result-set-1,#update-count-1
MapSqlParameterSource parameterSource = new MapSqlParameterSource();
parameterSource.addValue("name", "something");
Map<String, Object> resultFromProcedure = cstmt.execute(parameterSource);
[{
id = 123,
name = "something",
accountnumber = 123456,
balance = 789999
}]
在我尝试访问
之前,一切都很好resultFromProcedure.get("accountnumber")
哪个为空。问题是如何访问#result-set-1
中的值答案 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"));