存储过程

CREATE OR REPLACE PROCEDURE proc_test2(p_id             IN NUMBER,
                                       v_cur            OUT SYS_REFCURSOR,
                                       p_result_code    OUT NUMBER,
                                       p_result_message OUT VARCHAR2) AS
BEGIN

  p_result_message := '成功';
  p_result_code    := '1';

  open v_cur for
    select 1 id, 'test01' name
      from dual
    union all
    select 2, 'test02' from dual;

END;

调用测试

mybatis调用Oracle存储过程 带游标_System

游标

 

mybatis调用Oracle存储过程 带游标_System_02

 Mapper.xml

<resultMap id="BaseResultMap2" type="com.lxw.lxwDemo.pojo.Test">
        <id column="ID" property="id" jdbcType="DECIMAL" />
        <result column="NAME" property="name" jdbcType="VARCHAR" />
    </resultMap>

    <select id="proc_test2" statementType="CALLABLE">
  	 	{call proc_test2(
  			#{p_id,jdbcType=DECIMAL,mode=IN},
  			#{v_cur,jdbcType=CURSOR,mode=OUT,resultMap=BaseResultMap2,javaType=java.sql.ResultSet},
  			#{p_result_code,jdbcType=DECIMAL,mode=OUT},
  			#{p_result_message,jdbcType=VARCHAR,mode=OUT}
  		)}
    </select>

Mapper 

void proc_test2(Map map);

 调用测试

@Autowired
    private TestMapper testMapper;

    @Test
    public void proc_test2() {

        Map map=new HashMap();
        testMapper.proc_test2(map);
        List<com.lxw.lxwDemo.pojo.Test> tests= (List) map.get("v_cur");

        System.out.println(map);
        System.out.println(JSON.toJSONString(map));

        System.out.println(JSON.toJSONString(tests));
    }

结果

mybatis调用Oracle存储过程 带游标_Test_03