您的位置:首页 > 其它

mybatis 调用存储过程 返回游标 实例

2015-06-03 09:23 465 查看
存储过程示例:
create or replace procedure Fsp_Plan_CheckPrj(v_grantno  varchar2, v_deptcode number,  v_cursor   out sys_refcursor) is
………………
---返回统计结果
open v_Cursor for
select s.plan_code,
s.plan_dept,
s.plan_amount,
s.exec_amount,
p.cname       as plan_name,
d.cname       as dept_name
from Snap_plan_checkprj s
left join v_plan p
on s.plan_code = p.plan_code
left join org_office d
on s.plan_dept = d.off_org_code
group by s.plan_code,
s.plan_dept,
s.plan_amount,
s.exec_amount,
p.cname,
d.cname;
end;
end Fsp_Plan_CheckPrj;


mybatis:(mybatis doc api: http://mybatis.github.io/mybatis-3/zh/sqlmap-xml.html#Result_Maps)
java层代码

Map<String, Object> params = new HashMap<String, Object>();
GrantSetting gs = this. grantSettingDao.get(grantCode);
params.put( "grantNo", StringUtils. substring(gs.getGrantNo(), 0, 2));
params.put( "offOrgCode", SecurityUtils.getPersonOffOrgCode());

params.put("v_cursor", new ArrayList<Map<String, Object>>());//传入一个jdbc游标,用于接收返回参数
this. batisDao. getSearchList("call_Fsp_Plan_CheckPrj", params);


mybatis xml配置

<resultMap type ="java.util.HashMap" id= "cursorMap">
   <!--配置返回游标中别名对应的resultMap -->
<result column ="plan_code" property="plan_code" />
<result column ="plan_dept" property="plan_dept"  />
<result column ="plan_amount" property="plan_amount" />
<result column ="exec_amount" property="exec_amount"  />
<result column ="plan_name" property="plan_name" />
<result column ="dept_name" property="dept_name" />
</resultMap >
<select id ="call_Fsp_Plan_CheckPrj" parameterType= "map" statementType="CALLABLE" >
<!--注明statementType="CALLABLE"表示调用存储过程-->
{call Fsp_Plan_CheckPrj(#{grantNo, jdbcType=VARCHAR, mode=IN},
#{offOrgCode, jdbcType=INTEGER, mode=IN},
                  #{v_cursor, mode=OUT, jdbcType=CURSOR, resultMap=cursorMap})}
<!--传入传出参数要注明mode=IN/OUT 并要注明jdbcType(在网上可以查询mybatis支持哪些jdbcType类型),返回参数要注明对应的resultMap-->
</select >


最后,在jsp页面只需遍历
params.put( "v_cursor", OracleTypes. CURSOR);中的v_cursor。本身就是一个可遍历的list结果集

本文转自:http://blog.csdn.net/a9529lty/article/details/24401423
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: