我正在运行一个存储过程,它返回 2 个游标,它们都没有任何数据。我有以下映射xml:
<resultMap id="resultMap1" class="HashMap">
<result property="firstName" columnIndex="2"/>
</resultMap>
<resultMap id="resultMap2" class="com.somePackage.MyBean">
<result property="unitStreetName" column="street_name"/>
</resultMap>
<parameterMap id="parmmap" class="map">
<parameter property="id" jdbcType="String" javaType="java.lang.String" mode="IN"/>
<parameter property="Result0" jdbcType="ORACLECURSOR" javaType="java.sql.ResultSet" mode="OUT" resultMap="resultMap1"/>
<parameter property="Result1" jdbcType="ORACLECURSOR" javaType="java.sql.ResultSet" mode="OUT" resultMap="resultMap2"/>
</parameterMap>
<procedure id="proc" parameterMap="parmmap">
{ call my_sp (?,?,?) }
</procedure>
第一个结果集被放入一个 HashMap...第二个结果集被放入一个MyBean
类中。
我的 DAO 中的代码如下:
HashMap map = new HashMap()
map.put("id", "1234");
getSqlMapClientTemplate().queryForList("mymap.proc", map);
HashMap result1 = (HashMap)((List)parmMap.get("Result0")).get(0);
MyBean myObject = (MyBean)((List)parmMap.get("Result1")).get(0);//code fails here
在上面的最后一行..我的代码失败了。它失败是因为第二个游标没有行,这就是为什么没有放入列表的原因。但是,第一个游标也不返回任何内容,但是由于结果被放入HashMap
第一个游标的列表中,其中至少有HashMap
对象..
为什么会有这种差异?即使没有返回行,有没有办法让 iBatis 将 MyBean 的对象放入列表中?或者我应该在我的 DAO 中处理这个...我想避免在 DAO 中处理它,因为我有一大堆像这样的 DAO。