您的位置:首页 > 数据库 > Oracle

ibatis 调用有返回集合的存储过程 oracle

2014-05-07 11:41 316 查看
本例用到的存储过程不在此处说明,参照本人上篇文章《oracle 存储过程 分页 返回结果集》地址为http://blog.csdn.net/shuiluobu/article/details/25142691

注释:两个存储过程中去掉最后一个返回集,只保留一个

 

ibatis配置文件如下:

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE sqlMap

    PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" 

    "http://ibatis.apache.org/dtd/sql-map-2.dtd">

<sqlMap namespace="Paichan">

 <parameterMap id="paramDataMap" class="java.util.HashMap">

     <parameter property="p_curPage" jdbcType="INTEGER" javaType="java.lang.Integer" mode="INOUT"/>

     <parameter property="p_pageSize" jdbcType="INTEGER" javaType="java.lang.Integer" mode="INOUT"/>

     <parameter property="p_totalRecords" jdbcType="INTEGER" javaType="java.lang.Integer" mode="OUT"/>

     <parameter property="p_totalPages" jdbcType="INTEGER" javaType="java.lang.Integer" mode="OUT"/>

     <parameter property="v_cur" jdbcType="ORACLECURSOR" javaType="java.sql.ResultSet"   mode="OUT"/>

  <!-- <parameter property="v_cur_colmns" jdbcType="ORACLECURSOR" javaType="java.sql.ResultSet"  mode="OUT"/> -->  

    </parameterMap>

   

   

   <procedure id="getDataByExcel"  parameterMap="paramDataMap"
resultClass="java.util.HashMap">   

    <![CDATA[{call PRO_QUERY_BY_EXCEL01(?,?,?,?,?)}]]>

   </procedure>

</sqlMap>

 

userDao类如下:

    public List queryDataByExcel(Map map) {

          // TODO Auto-generated method stub

          try{

              return  (List)this.getSqlMapClientTemplate().queryForList("Paichan.getDataByExcel",map);

        }catch(Exception e){

            e.printStackTrace();

        }

        return null;

      

        

    }

Action类如下:

 public String ExcelDown(){

       

        Map map=new HashMap();

       

        map.put("p_curPage", 1);

        map.put("p_pageSize", 20);

       

        List results=userDao.queryDataByExcel(map);

       

        System.out.println(map.get("p_pageSize")+"============");

        System.out.println(results.size()+"============");        

        return null;

    }

 

需要注意的是对于非集合的返回参数,从map里面获取,(如返回参数p_pageSize),对于cursor集合,也就是"v_cur"从List中获取

 

 

当然,还有第二种方式,cursor集合也可以都从map里面获取,当从map里面获取时,需要设置

  <parameter property="v_cur" jdbcType="ORACLECURSOR" javaType="java.sql.ResultSet"   mode="OUT"/>

这行代码加 resultMap属性,修改后,如下:

<parameter property="v_cur" jdbcType="ORACLECURSOR" javaType="java.sql.ResultSet"  resultMap=”自己建立一个对应的resultMap“  mode="OUT"/>

否则map里的v_cur为空。

 

 

对于返回多个结果集,经本人验证,只能采用第二种方式,也就是每个cursor都添加对应的resultMap属性,然后从map中获取
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: