ibatis 项目开发中遇到奇怪bug解决集

来源:互联网 发布:克林顿基金会 知乎 编辑:程序博客网 时间:2024/06/01 16:06

oracle 有一个jar包,ojdbc14,大概1.5M,当列和值集都是动态生成时,时间格式显示不全(通常时分秒不能显示),经查明,是这个jar问题,只要换成其他版本的oracle jdbc的jar包就可以解决


ibatis调用存储过程,有返回cursor的存储过程,实例如下:

 <parameterMap id="paramDataMap1" class="java.util.HashMap">
        <parameter property="iv_version_id" jdbcType="VARCHAR" javaType="java.lang.String" mode="IN"/>
        <parameter property="iv_factory_id" jdbcType="VARCHAR" javaType="java.lang.String" mode="IN"/>
        <parameter property="iv_dept" jdbcType="VARCHAR" javaType="java.lang.String" mode="IN"/>
        <parameter property="iv_wrkgrp" jdbcType="VARCHAR" javaType="java.lang.String" mode="IN"/>
        <parameter property="o_title" jdbcType="VARCHAR" javaType="java.lang.String"   mode="OUT"/>
        <parameter property="o_title_field" jdbcType="VARCHAR" javaType="java.lang.String"   mode="OUT"/>
        <parameter property="o_cursor" jdbcType="ORACLECURSOR" javaType="java.sql.ResultSet"   mode="OUT"/>
    </parameterMap>
   
    <procedure id="getDataForExcel"  parameterMap="paramDataMap1" resultClass="java.util.HashMap" remapResults="true">    
       <![CDATA[{call pkgmesplan.sp_paichan_statis_rpt(?,?,?,?,?,?,?)}]]>
   </procedure>


注意remapResults="true"属性,应为该存储过程都是动态生成o_title_field,每调用一次可能o_title_field的值都不一样,ibatis默认会读取前一次的值,这样就会报找不到XX列的映射。所以需要remapResults="true"。这样问题就解决了

0 0
原创粉丝点击