MyBatis調用預存程序,含有返回結果集、return參數和output參數 .

來源:互聯網
上載者:User

預存程序:

use base_passport

go

 

create proc yhj_test

    @input_a int,

    @input_b int,

    @output_c int out

as

begin

    select * from config.city;

    set @output_c = @input_a*@input_b;

    return @input_a+@input_b;

end
 

 

Mybats配置:

    <resultMap type="java.util.HashMap" id="resultMap">

       <result column="city_key" property="cityKey"javaType="java.lang.Integer" jdbcType="INTEGER"/>

       <result column="province_key" property="provinceKey"javaType="java.lang.Integer" jdbcType="INTEGER"/>

       <result column="city_name" property="cityName"javaType="java.lang.String" jdbcType="VARCHAR"/>

    </resultMap>

  

    <select id="testByProc" statementType="CALLABLE"parameterType="java.util.HashMap" resultMap="resultMap">

       <![CDATA[

           {#{d,mode=OUT,jdbcType=INTEGER}=call dbo.yhj_test(

              #{a,mode=IN,jdbcType=INTEGER},

              #{b,mode=IN,jdbcType=INTEGER},

              #{c,mode=OUT,jdbcType=INTEGER}

           )}   

       ]]>

    </select>
 


 

Java代碼

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

       paramMap.put("a", 2);

       paramMap.put("b", 3);

       List<City> citys = (List<City>) getTemplate().selectList(getNameSpaceAndMethod("testByProc"), paramMap);

       return citys;
 


通過以上代碼我們即可擷取對應的結果集,return參數和output參數。其中return參數和output參數放在傳入的paramMap中,運行結果如下:


 

c是預存程序的output參數,而d為return參數。

需要注意的事項:

1、  預存程序的參數和名稱無關,只和順序有關係

2、  預存程序的output參數,只能通過傳入的map擷取

3、  預存程序返回的結果集可直接用返回的map接收

4、  預存程序的return結果需要使用?=call procName(?,?)的第一個參數接收,需要指定對應的mode為OUT類型

5、  預存程序對應的資料類型為枚舉類型,需要使用大寫,如VARCHAR

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.