ibatis的动态结果使用 java.util.HashMap,来映射,在昨天遇到一个情况,,,挺郁闷:
HashMap虽然可以映射,但返回值类型是不确定的,我调用一个存储过程,返回字段为
@result,值为0或-1,开始还能通过map.get("@result")来正常获到0或-1,后来就报错了,
通过调试,发现map里key "@result" 对应的value 是个字节数组byte[].
这种不确定性,肯定在其他类型里也存在,不知道有没有什么好的解决方案。
补充:
后来 我用
<resultMap id="..." class="java.util.HashMap" >
<result property="@result" column="@result" jdbcType="NUMBER" />
...
</resultMap>
来定义返回类型也没用
再后来
我把存储过程改成用-1 replace @result
select -1,.... from tablename
resultmap:
<resultMap id="..." class="java.util.HashMap" >
<result property="@result" column="-1" />
...
</resultMap>
结果可以就可以了....
我在改成原来的
<resultMap id="..." class="java.util.HashMap" >
<result property="@result" column="@result" />
...
</resultMap>
又报错.....
数据库原因?ibatis bug? 受不了,还是那句话所谓的完美都是假象,code可以是最不严谨的逻辑了