• 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

  • 相关阅读:
    《程序员你伤不起》读书总结
    03SpringBoot用JdbcTemplates访问Mysql
    02Spring Boot配置文件详解
    01构建第一个SpringBoot工程
    java基础-04泛型
    java集合-HashSet源码解析
    java集合-HashMap源码解析
    java基础-03基本语法
    java基础-02数据类型
    java基础-01基本概念
  • 原文地址:https://www.cnblogs.com/dreammyle/p/4548295.html
Copyright © 2020-2023  润新知