iBatis调用返回两个游标的存储过程处理方法
来源:互联网 发布:淘宝客服忙不忙 编辑:程序博客网 时间:2024/05/01 18:42
遇到这么一个问题,需要通过Ibatis调用一个返回两个游标的存储过程。在网上找资料来着,发现问此问题的挺多的,但难以找到解决方案,于是,估摸着调用返回一个游标的存储过程处理方式,整出了调用返回两个游标的存储过程。现贴出来与大家共享。
举例如下:
存储过程:
create or replace function fn_tester(
cursor_data1 out sys_refcursor ,
cursor_data2 out sys_refcursor
)
return number
as
begin
begin
open cursor_data1
for SELECT
e.data_1,
e.data_2,
e.data_3 from a_table e;
open cursor_data2 for
for SELECT
e.data_4,
e.data_5,
e.data_6 from b_table e;
end fn_tester;
sqlmap 写法如下:
<!-- 游标1数据配置-->
<resultMap class="com.table1" id="result1">
<result property="data1" column="data_1"/>
<result property="data2" column="data_2"/>
<result property="data3" column="data_3"/>
</resultMap>
<!-- 游标2数据配置-->
<resultMap class="com.table2" id="result2">
<result property="data4" column="data_4"/>
<result property="data5" column="data_5"/>
<result property="data6" column="data_6"/>
</resultMap>
<!-- 调用存储过程传入参数配置-->
<parameterMap class="java.util.HashMap" id="testParam">
<parameter property="result" jdbcType="INTEGER"
javaType="java.lang.Long" mode="OUT" />
<parameter property="table1Data" jdbcType="ORACLECURSOR"
javaType="java.sql.ResultSet" resultMap="result1" mode="OUT" />
<parameter property="table2Data" jdbcType="ORACLECURSOR"
javaType="java.sql.ResultSet" resultMap="result2" mode="OUT" />
</parameterMap>
<!-- 存储过程调起-->
<procedure id="testId" parameterMap="testParam">
<![CDATA[
{? = call fn_tester(?,?)}
]]>
</procedure>
<result property="data1" column="data_1"/>
<result property="data2" column="data_2"/>
<result property="data3" column="data_3"/>
</resultMap>
<!-- 游标2数据配置-->
<resultMap class="com.table2" id="result2">
<result property="data4" column="data_4"/>
<result property="data5" column="data_5"/>
<result property="data6" column="data_6"/>
</resultMap>
<!-- 调用存储过程传入参数配置-->
<parameterMap class="java.util.HashMap" id="testParam">
<parameter property="result" jdbcType="INTEGER"
javaType="java.lang.Long" mode="OUT" />
<parameter property="table1Data" jdbcType="ORACLECURSOR"
javaType="java.sql.ResultSet" resultMap="result1" mode="OUT" />
<parameter property="table2Data" jdbcType="ORACLECURSOR"
javaType="java.sql.ResultSet" resultMap="result2" mode="OUT" />
</parameterMap>
<!-- 存储过程调起-->
<procedure id="testId" parameterMap="testParam">
<![CDATA[
{? = call fn_tester(?,?)}
]]>
</procedure>
dao层数据获取:
其中table1、table2是两个pojo;
public void getData(Map paramMap) throws SqlException {
try {
getSqlMapClientTemplate().queryForObject( NAMESPACE + "testId" ,paramMap);
// 游标1获取
List< table1> dataList1= (List<table1>)paramMap.get( "table1Data" );
// 游标2获取
List< table2> dataList2= (List<table2>)paramMap.get( "table2Data" );
} catch (SqlException e) {
throw e;
}
System. out .println(dataList1);
System. out .println(dataList2);
}
自己写个测试用例就可以测试了。
- iBatis调用返回两个游标的存储过程处理方法
- ibatis 调用存储过程返回游标sys_refcursor
- ibatis处理存储过程返回游标
- 带游标的存储过程 ibatis 调用方法
- ibatis调用oracle存储过程,返回游标集合
- del调用返回游标的存储过程
- ibatis调用oracle的函数,存储过程的方法 IN 和OUT /游标
- ibatis调用oracle的函数、存储过程的方法 in和out游标
- ibatis调用oracle的函数,存储过程的方法_IN_和OUT_游标
- ibatis调用oracle的函数,存储过程的方法 IN 和OUT /游标
- ibatis调用带游标的存储过程package
- iBatis调用存储过程的方法
- iBatis调用存储过程的方法
- Ibatis调用Oracle存储过程,以及返回Cursor结果集的处理
- Mybaits结合Oracle调用存储过程返回游标的两种方法
- vb调用oracle数据库返回游标的存储过程
- MFC调用postgres数据库返回游标存储过程的疑惑
- jdbc中调用oracle 返回游标类型的存储过程
- iOS文件管理 NSFileManager NSFileHandle
- Ubuntu中apt-get命令详解
- MPLab X 配置字的设置
- Linux内核关机重启源码分析
- 挑战编程:抛硬币赌博游戏【转】
- iBatis调用返回两个游标的存储过程处理方法
- TwoSat
- apple相关网址
- SQLite 第三版中的数据类型
- < Linux Kernel > Reference Counts
- 如何在 ESRI ArcMap 中打开谷歌卫星地图
- C++小结1
- CentOS 6 修改yum源为本地光盘
- SQLite3 C/C++ 开发接口简介(API函数)