问题描述
执行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中的值
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();
2楼
由于可能有多个结果集,因此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"));