1. 程式人生 > >Mybatis呼叫Oracle返回結果集儲存過程

Mybatis呼叫Oracle返回結果集儲存過程

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 [[email protected]]

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

DEBUG - Resetting autocommit to true on JDBC Connection [[email protected]]

DEBUG - Closing JDBC Connection [[email protected]]

DEBUG - Returned connection 8344960 to pool.

相關推薦

Mybatis呼叫Oracle返回結果儲存過程

Mapper.xml 配置   <resultMap type="emp" id="empMap">   <id property="empno" column="empno"/>   <result property="ename"

mybatis 呼叫 oracle 返回結果 儲存過程

轉:http://hi.baidu.com/jy4214/blog/item/192ad99004b09992a877a464.html 執行環境 struts2+spring3.0+mybatis Mapper配置 <select id="getSiteBySite

Mysql 動態sql語句返回結果-儲存過程

DELIMITER $$    DROP PROCEDURE IF EXISTS `rhtd_account_report_proc`$$ CREATE PROCEDURE `rhtd_callcenter`.`rhtd_account_report_proc`(IN userids VARCHAR(2000

myBatis呼叫返回值的儲存過程(mysql)

折騰了一上午才順利的把這個跑通了,廢話不多說,上程式碼! 1.儲存過程返回一個String CREATE PROCEDURE `sp_redblack_prize`(OUT result_record varchar(2000000)){……} 2.在mapper.xml中

MyBatis呼叫帶有返回結果之output引數型別的儲存過程

儲存過程示例: ALTER PROCEDURE [WebApi_Login_SendPhoneCode ] ( @Action int, --1:查詢 2:新增一條記錄 @PhoneNo varchar(20), @Smscode varchar(10), @SendType

mybatis呼叫Oracle儲存過程返回結果

在開發中,有時需要關聯幾張表來進行一些複雜的計算,此時可採用建立一張臨時表,將每次的資料計算後先存入臨時表,然後通過Oracle的遊標返回。 在mybatis中的呼叫如下: //呼叫語法格式,需要構造一個resultMap,用來接收返回的結果集 <select id

SSM-Mybatis呼叫Oracle儲存過程返回結果(遊標)示例

1.建立一個包 此處建立一個包,是為了建立儲存過程時,用遊標作為out輸出引數時宣告為遊標型別用的. --建立一個包 create or replace package types as type empListCursor is ref cursor

C#呼叫ORACLE儲存過程返回結果

Oracle中scott使用者下建立儲存過程: (注:從9i開始有了sys_refcursor這種型別,在以前的Oracle版本中需要使用REF CURSOR,並且還需放在一個程式包中) create or replace procedure sp_getdept (result

C#呼叫Oracle儲存過程返回結果

1.建立一個儲存過程: createorreplaceprocedure GET_PERSON ( RC1 outsys_refcursor, RC2 outsys_refcursor ) is begin open RC1 for select * from PERSO

oracle呼叫儲存過程和函式返回結果

在程式開發中,常用到返回結果集的儲存過程,這個在MySQL和sql server 裡比較好處理,直接返回查詢結果就可以了,但在Oracle裡面 要 out 出去,就多了一個步驟,對於不熟悉的兄弟們還得出上一頭汗:),這裡我簡單介紹一下,以供參考,   1  定義包      

關於oracle呼叫儲存過程返回結果

這兩天因為公司要求,去學習了下以前一直模模糊糊的儲存過程,記錄下關於返回結果集的問題。 要返回結果集,首先你必須有個遊標,它是記錄你的查詢集的。而定義一個遊標有好多方法: 1,你可以在包中定義。然後將遊標變數作為儲存過程引數的型別。 CREATE OR REPLACE P

[Oracle]高效的PL/SQL程式設計(五)--呼叫儲存過程返回結果

            Oracle.DataAccess.Client.OracleConnection oracleConnection1=new OracleConnection("data source=precolm2;user id=colmtest;password=colmtest");   

MyBatis呼叫儲存過程返回結果

儲存過程: create or replace procedure get_result_by_sql(p_sql in varchar2,p_result out sys_refcursor,p_msg out varchar2) is begin

mybatis呼叫mysql儲存過程返回結果

儲存過程中經常需要返回結果集。Mysql中直接用select即可返回結果集。而oracle則需要使用遊標來返回結果集。這一點Mysql相對比較方便,如下程式碼即可實現輸出結果集: 儲存過程定義: D

oracle 儲存過程返回結果 (轉載)

好久沒上來了, 難道今天工作時間稍有空閒, 研究了一下oracle儲存過程返回結果集.        配合oracle臨時表, 使用儲存過程來返回結果集的資料讀取方式可以解決海量資料表與其他表的連線問題. 在儲存過程中先根據過濾條件從海量資料表中選出符合條件的記錄並存放到臨

mybatis 呼叫oracle儲存過程,傳參、返回遊標的值獲取--示例

1,dao層程式碼 Integer currentlq_fsx = getSqlSession().selectOne("lqMapper.maxscore"); Map<String,Object> map = new HashMap<String,O

python 呼叫mysql儲存過程返回結果

儲存過程: delimiter | create procedure get_product_info(in imid int(10),int iuser varchar(20)) begin select * from tb_test where mid = i

oracle儲存過程傳入in引數,返回結果

create or replace procedure proc_report_TEST(zhxshss in varchar2, pcursor out sys_refcursor) as begi

java呼叫儲存過程 返回結果

Java程式碼呼叫儲存過程:public Map<String, Object> rankInfo(Map<String, Object> rankMap,String start,String end, String userId,String o

mybatis呼叫oracle儲存過程 返回sys_refcursor

Map<String, Object> map = new HashMap<String, Object>(); map.put("id", "0"); mapper.selectPosBy(map); return (List) map