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中获取
注释:两个存储过程中去掉最后一个返回集,只保留一个
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中获取
相关文章推荐
- IBatis调用ORACLE的存储过程、函数的返回结果集例子
- oracle调用存储过程和函数返回结果集
- mybatis 调用 oracle 返回结果集 存储过程
- java 调用oracle的存储过程返回记录集
- 最完整的:JAVA调用ORACLE的存储过程、函数的返回结果集例子
- (转载)oracle 在一个存储过程中调用另一个返回游标的存储过程
- oracle存储过程如何返回list,并用jdbc调用
- oracle 在一个存储过程中调用另一个返回游标的存储过程
- 如何在Delphi中调用oracle的存储过程返回数据集
- JAVA调用ORACLE带数组输入参数和返回游标结果集的存储过程
- oracle中存储过程调用存储过程(带有返回结果集)
- Oracle中存储过程中赋值和传参及程序调用返回DS
- 最完整的:JAVA调用ORACLE的存储过程、函数的返回结果集例子
- hibernate调用存储过程及处理返回集合
- Java调用Oracle集合类型输出参数的存储过程
- 用.NET调用oracle的存储过程返回记录集
- JAVA调用ORACLE的存储过程、函数的返回结果集例子
- 用.NET调用oracle的存储过程返回记录集
- oracle调用存储过程和函数返回结果集
- SQLServer和ORACLE 存储过程的调用(返回结果集)