Mapper.xml 配置

<resultMap type="emp" id="empMap">

<id property="empno" column="empno"/>

<result property="ename" column="ename"/>

<result property="mgr" column="mgr"/>

<result property="job" column="job"/>

<result property="hiredate" column="hiredate"/>

<result property="sal" column="sal"/>

<result property="comm" column="comm"/>

</resultMap>

<!-- 调用存储过程返回结果集 -->

<select id="getEmps" parameterType="java.util.Map" statementType="CALLABLE">

<![CDATA[

call pro_emp(#{emps,mode=OUT,jdbcType=CURSOR,javaType=java.sql.ResultSet,resultMap=empMap})  ]]>

</select>

存储过程:

create or replace procedure pro_emp(cur_sys out sys_refcursor)

as

begin

open cur_sys for select empno, ename, job, mgr, hiredate, sal, comm, deptno

from tb_emp;

end;

IOperation接口里的方法 :

public interface IOperation {

void getEmps(Map<String, Object> param);

}

测试类:

public class Mytest {

private SqlSession sqlSession;

private IOperation mapper;

@Before

public void before(){

try {

SqlSessionFactory factory=MyBatisUtil.getSqlSessionFactory();

sqlSession=factory.openSession();

mapper=sqlSession.getMapper(IOperation.class);

System.out.println("start");

} catch (Exception e) {

System.out.println(e.getMessage());

}

}

@Test

public void getEmps(){

try {

Map<String, Object> param = new HashMap<String, Object>();

param.put("emps",OracleTypes.CURSOR);

mapper.getEmps(param);

List<Emp> depts =(List<Emp>)param.get("emps");

for (Emp emp : depts) {

System.out.println(emp.getEmpno()+" "+emp.getEname());

}

} catch (Exception e) {

System.out.println("getEmp: "+e.getMessage());

}

}

@After

public void after(){

System.out.println("close");

sqlSession.close();

}

}

结果:

start

DEBUG - Openning JDBC Connection

DEBUG - Created connection 8344960.

DEBUG - ooo Using Connection [oracle.jdbc.driver.T4CConnection@7f5580]

DEBUG - ==>  Preparing: call pro_emp(?)

DEBUG - ==> Parameters:

123 liuzan

7369 SMITH

7499 ALLEN

7521 WARD

7566 JONES

7654 MARTIN

7698 BLAKE

7782 CLARK

7788 SCOTT

7839 KING

7844 TURNER

7876 ADAMS

7900 JAMES

7902 FORD

7934 MILLER

close

myabatis oracle 调用存储过程返回list结果集的更多相关文章

  1. [转]Oracle 调用存储过程并显示结果集 Oracle.DataAccess.Client OracleDbType.RefCursor

    本文转自:http://liye9801.blog.163.com/blog/static/6019703200901244448950/ 今天学习了一个Oracle中的存储过程,一开始便被如果返回结 ...

  2. PB中用oracle的存储过程返回记录集做数据源来生成数据窗口,PB会找不到此存储过程及不能正常识别存储过程的参数问题(转)

    (转)在PB中用oracle的存储过程返回记录集做数据源来生成数据窗口 首先oracle的存储过程写法与MSSQL不一样,差别比较大. 如果是返回数据集的存储过程则需要利用oracle的包来定义游标. ...

  3. PostgreSQL 调用存储过程返回结果集

    创建返回结果集类型的存储过程: CREATE OR REPLACE FUNCTION public.f_get_member_info( id integer, productname charact ...

  4. 《Entity Framework 6 Recipes》中文翻译系列 (14) -----第三章 查询之查询中设置默认值和存储过程返回多结果集

    翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 3-6在查询中设置默认值 问题 你有这样一个用例,当查询返回null值时,给相应属性 ...

  5. oracle调用存储过程和函数返回结果集

    在程序开发中,常用到返回结果集的存储过程,这个在mysql和sql server 里比较好处理,直接返回查询结果就可以了,但在oracle里面 要 out 出去,就多了一个步骤,对于不熟悉的兄弟们还得 ...

  6. Java 调用存储过程 返回结果集

    这里使用Oracle数据库的thin连接. 下面是存储过程SQL 1 createorreplaceprocedure proc3(stid in student.stuid%type, stname ...

  7. oracle学习-存储过程返回一个值,和返回一个结果集

    一.返回一个值 --创建存储过程 create or replace procedure sp_hu_test(spcode in varchar2,spname out varchar2)is be ...

  8. 使用EntityFramework调用存储过程并获取存储过程返回的结果集

    [实习]刚入职,公司要求完成两个任务,任务要求使用存储过程和事务,其中一个问题要获取存储过程的查询结果集.经过多方查找和自己的实践,终于找到了方法.这里记录一下. 看到的这篇文章中给出的例子是查询单个 ...

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

    存储过程示例: create or replace procedure Fsp_Plan_CheckPrj(v_grantno varchar2, v_deptcode number, v_curso ...

随机推荐

  1. Web App 压力测试

    建议您可以在本地压测来进行评估 具体的压测方法请参考下面的链接:https://www.visualstudio.com/zh-cn/docs/test/performance-testing/run ...

  2. HTML学习笔记——标签(二)

    标签十二:<ul>标签 语义:是没有前后顺序的信息列表 语法: <ul> <li>信息</li> <li>信息</li> ... ...

  3. 建模前的数据清洗/ETL(python)

    1. 读取数据 data= open('e:/java_ws/scalademo/data/sample_naive_bayes_data.txt' , 'r') 2. 把数据随机分割为trainin ...

  4. mybatis-generator指定列进行自动生成代码

    目前mybatis-generator已经升级到1.3.3,功能比较强大,但是目前从table中如果字段较多可以选择忽略生产的字段(通过ignoreColumn属性实现,http://generato ...

  5. 4 django系列之HTML通过form标签来同时提交表单内容与上传文件

    preface 我们知道提交表单有2种方式,一种直接通过submit页面刷新方法来提交,另一种通过ajax异步局部刷新的方法提交,上回我们说了通过ajax来提交文件到后台,现在说说通过submit来提 ...

  6. 如何解决Maven和SBT下载Jar包太慢

    国内:如何解决Maven和SBT下载Jar包太慢 Maven 远程仓库 <mirror> <id>ui</id> <mirrorOf>central&l ...

  7. pip 与pip3

    pip 3用于python3 版本 pip2 用于python2版本 pip好像可以通用 "pip2" is for Python2, "pip3″ is for Pyt ...

  8. App.config“配置系统未能初始化” 异常解决 C#

    System.Configuration.ConfigurationManager.AppSettings["user"]; 时出现“配置系统未能初始化” 错误 解决办法: 如果配 ...

  9. 机器学习——k-近邻算法

    k-近邻算法(kNN)采用测量不同特征值之间的距离方法进行分类. 优点:精度高.对异常值不敏感.无数据输入假定 缺点:计算复杂度高.空间复杂度高 使用数据范围:数值型和标称型 工作原理:存在一个样本数 ...

  10. 防火墙iptables

    iptables命令可用于配置Linux的包过滤规则,常用于实现防火墙.NAT.咋一看iptables的配置很复杂,掌握规律后,其实用iptables完成指定任务并不难,下面我们通过具体实例,学习ip ...