关闭

MyBatis调用存储过程,含有返回结果集、return参数和output参数

标签: mybatismysql结果集返回值存储过程
1271人阅读 评论(0) 收藏 举报
分类:

Ibatis是我们经常使用的O/R映射框架,mybatsibatisGoogle收购后重新命名的一个工程,当然也做了大量的升级。而调用存储过程也是一次额C/S架构模式下经常使用的手段,我们知道,ibatis调用存储过程有一个专门的标签<procedure>,在mybats里面已经没有这本标签了,而是通过一个参数statementType="CALLABLE"来区分。废话不多说,直接看怎么写吧!

测试环境:mybats3.0.4 + sqlserver2008 +Spring3.1.1

存储过程:

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
mybatis配置文件:

<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参数,而dreturn参数。

需要注意的事项:

1、  存储过程的参数和名称无关,只和顺序有关系

2、  存储过程的output参数,只能通过传入的map获取

3、  存储过程返回的结果集可直接用返回的map接收

4、  存储过程的return结果需要使用?=call procName(?,?)的第一个参数接收,需要指定对应的modeOUT类型

5、  存储过程对应的数据类型为枚举类型,需要使用大写,如VARCHAR



0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

MyBatis调用存储过程,含有返回结果集、return参数和output参数 .

mybatis调用存储过程,学习案例
  • caiwenfeng_for_23
  • caiwenfeng_for_23
  • 2013-07-11 07:26
  • 49904

mybatis调用存储过程及返回值获取

mybatis调用存储过程及返回值获取 存储过程的返回结果直接放在 传入参数的map中(paramCusKey) 调用前{INPARA=CUSTOMER_KEY=545} 调用后 {OUTPA...
  • y666666y
  • y666666y
  • 2017-04-17 15:48
  • 6270

mybatis调存储过程返回输出参数

过程: --------------------- create or replace PROCEDURE PRO_RETURE_CURSOR(modelid varchar2,CUR OUT ...
  • ysxybyb
  • ysxybyb
  • 2017-01-12 15:51
  • 482

MyBatis调用存储过程,含有返回结果集、return参数和output参数

Ibatis是我们经常使用的O/R映射框架,mybats是ibatis被Google收购后重新命名的一个工程,当然也做了大量的升级。而调用存储过程也是一次额C/S架构模式下经常使用的手段,我们知道,i...
  • jbgtwang
  • jbgtwang
  • 2013-07-18 17:56
  • 14815

Mybatis调用存储过程返回多个结果集

数据库用的是SqlServer2008 图片为数据库执行存储过程返回的数据 Mybatis调用存储过程返回结果集 配置文件 ...
  • PAPALIAN
  • PAPALIAN
  • 2015-01-21 19:40
  • 12604

mybatis调用orcale存储过程-传入多个参数返回单个字符

mybatis.xml配置:   javaType="java.lang.String" mode="IN" /> javaType="java.lang.String" mode="IN" .....
  • s592652578
  • s592652578
  • 2016-03-03 18:47
  • 756

MyBatis调用带有返回结果、output参数的存储过程上与ibatis的区别

用过mybatis的应该都知道它是ibatis被Google收购后重新命名的一个工程,因此也做了大量升级。本文就来介绍下两者在调用存储过程上的一点区别,ibatis有一个专门的标签,在mybatis里...
  • hj7jay
  • hj7jay
  • 2017-07-19 09:41
  • 928

mybatis调用存储过程

最近在研究mybatis调用存储过程,发表一下自己的学习心得 其中最好用的就是通过map传值,结果还用这个map接收,因为map是一个非常强大的东西,有时候存储过程要操作多张表, 比如说:往多张表插入...
  • QM972040417
  • QM972040417
  • 2015-09-14 21:25
  • 1514

mybatis调用存储过程

记两一下工作中用到的mybatis调用存储过程,这边用到的mybatis是3.2.2版本,oracle 10g。 一、返回一个值的存储过程,如下: CREATE OR REPLACE PROCEDUR...
  • wangchangpen62
  • wangchangpen62
  • 2015-04-09 16:36
  • 8531

MyBatis调用存储过程返回结果集

存储过程:create or replace procedure get_result_by_sql(p_sql in varchar2,p_result out sys_refcursor) is ...
  • maci_hotesion
  • maci_hotesion
  • 2016-06-09 02:53
  • 2941
    个人资料
    • 访问:1802424次
    • 积分:20647
    • 等级:
    • 排名:第457名
    • 原创:609篇
    • 转载:788篇
    • 译文:4篇
    • 评论:73条
    技术交流
    域名出售
    www.importnew.cn
    www.jinrimiantiao.com
    文章分类
    最新评论