MyBatis调用存储过程返回结果集

存储过程:

create or replace procedure get_result_by_sql(p_sql in varchar2,p_result out sys_refcursor,p_msg out varchar2) is
begin
  open p_result for p_sql;
  p_msg := '执行SQL成功了';
EXCEPTION
  WHEN OTHERS THEN
    p_msg := '执行SQL出错了';
end get_result_by_sql;

Mbatis配置:

<resultMap id="getResultBySQLMap" type="com.hotesion.pojo.testVO">
    <result column="id" jdbcType="DECIMAL" property="id" />
    <result column="key" jdbcType="VARCHAR" property="key" />
    <result column="name" jdbcType="VARCHAR" property="name" />
</resultMap>
<select id="getResultBySQL1" statementType="CALLABLE">
{call get_result_by_sql(
#{sql,jdbcType=VARCHAR,mode=IN},
#{result,mode=OUT,jdbcType=CURSOR,javaType=ResultSet,resultMap=getResultBySQLMap},
#{msg,mode=OUT,jdbcType=VARCHAR,javaType=String})}
</select>

<select id="getResultBySQL2" statementType="CALLABLE">
{call get_result_by_sql(
#{sql,jdbcType=VARCHAR,mode=IN},
#{result,mode=OUT,jdbcType=CURSOR,javaType=ResultSet,resultType=java.util.LinkedHashMap},
#{msg,mode=OUT,jdbcType=VARCHAR,javaType=String})}
</select>

Java调用:

public List getResultBySQL(String sql){
        Map<String,Object> map=new HashMap<String, Object>();
        map.put("sql", sql);
        //
        testDao.getResultBySQL1(map);
        System.err.println("1====="+map.get("msg"));
        List list1 = (List)map.get("result");
        //或者
        testDao.getResultBySQL2(map);
        System.err.println("2====="+map.get("msg"));
        List list2 = (List)map.get("result");;
        return list1;
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值