mybatis 调用存储过程 返回游标 实例
存储过程示例:
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
mybatis 调用存储过程 返回游标 实例的更多相关文章
- Oracle存储过程返回游标实例详解
复制代码 代码如下:CREATE OR REPLACE PROCEDURE PROCSENDEMAIL(P_TXT VARCHAR2, P_SUB VARCHAR2, P_SENDOR VARCHAR ...
- Oracle创建表语句(Create table)语法详解及示例、、 C# 调用Oracle 存储过程返回数据集 实例
Oracle创建表语句(Create table)语法详解及示例 2010-06-28 13:59:13| 分类: Oracle PL/SQL|字号 订阅 创建表(Create table)语法详解 ...
- 【Mybatis】MyBatis调用带有返回结果、output参数的存储过程上与ibatis的区别
用过mybatis的应该都知道它是ibatis被Google收购后重新命名的一个工程,因此也做了大量升级.本文就来介绍下两者在调用存储过程上的一点区别,ibatis有一个专门的标签<proced ...
- myabatis oracle 调用存储过程返回list结果集
Mapper.xml 配置 <resultMap type="emp" id="empMap"> <id property="emp ...
- MyBatis基础:MyBatis调用存储过程(6)
1. 存储过程准备 CREATE PROCEDURE sp_task ( IN userId INT ) BEGIN SELECT * FROM task WHERE user_id = userId ...
- PostgreSQL 调用存储过程返回结果集
创建返回结果集类型的存储过程: CREATE OR REPLACE FUNCTION public.f_get_member_info( id integer, productname charact ...
- 使用mybatis调用存储过程(注解形式和配置文件形式)
最近在看资料中涉及到mybatis,突然想到mysql中的视图.存储过程.函数.现将在使用mybatis调用mysql的存储过程使用总结下: 使用的环境:mybatis3.4.6,mysql 5.6, ...
- Mybatis调用存储过程报错
Mybatis调用存储过程 贴码 123456 Error querying database. Cause: java.sql.SQLException: User does not have ac ...
- mybatis调用存储过程,获取返回的游标
将调用存储过程参数放入map中,由于返回的游标中包含很多参数,所以再写一个resultmap与之对应,类型为hashmap.设置返回的jdbcType=CURSOR,resultMap设置为id对应的 ...
随机推荐
- 《ASP.NET1200例》ListView控件之修改,删除与添加
aspx <body> <form id="form1" runat="server"> <div> <asp:Lis ...
- C++使用throw抛出异常
引用: c++ 使用throw抛出异常 抛出异常(也称为抛弃异常)即检测是否产生异常,在C++中,其采用throw语句来实现,如果检测到产生异常,则抛出异常.该语句的格式为:throw 表达式; ...
- project.json
概述 项目相关配置,由原来的cocos2d.js中转移到project.json中,该文件需要与index.html同级,一般建议放在根目录下. 字段说明 debugMode 相当于原来的COCOS2 ...
- VS禁止特定警告
项目右键-属性-配置属性-C/C++-高级-禁用特定警告-填写警告编号例如4996
- KMP模式匹配_2
http://blog.csdn.net/lin_bei/article/details/1252686 三. 怎么求串的模式值next[n] 定义: (1)next[0]= -1 意义:任何串的第一 ...
- mysql_1
1.mysql> select NOW();等效于select user()\g+---------------------+| NOW() |+---------- ...
- [杂]DeadLock, Isolation Level, EntityFramework
由于没有注意到EF事务的默认隔离级别是Serializable,(据说EF6.0以后默认隔离级别改成了Read_Commit_Snapshot)--这里有误,应该是加了TransactionScope ...
- PHP站内搜索:多关键字、加亮显示
一.SQL语句中的模糊查找 主要通过LIKE(不区分大小写)关键字实现模糊查找.LIKE条件一般用在指定搜索某字段的时候, 通过"%"或者" _" ...
- PHP项目:如何用PHP高并发检索数据库?
对于抢票.秒杀这种业务,我说说自己对这种高并发的理解吧,这里提出个人认为比较可行的几个方案: 方案一:使用队列来实现 可以基于例如MemcacheQ等这样的消息队列,具体的实现方案这么表述吧 比如有1 ...
- Struts2的@ResultPath
转自:http://blog.csdn.net/yandufeng/article/details/8105495 这里我要补充一下:要理解Annotation,最好的方法还是看源码,struts中c ...