Mybatis调用存储过程

1.创建存储过程 例如

存储过程中 in,out, in out 表示;

in 是参数的默认模式,这种模式就是在程序运行的时候已经具有值,在程序体中值不会改变。

out模式定义的参数只能在过程体内部赋值,表示该参数可以将某个值传递回调用他的过程

in out 表示高参数可以向该过程中传递值,也可以将某个值传出去

创建一个加法的存储过程,输入2个数字,然后计算和输出结果

DROP PROCEDURE IF EXISTS `proc_adder`;

CREATE DEFINER=`root`@`localhost` PROCEDURE `proc_adder`(IN a int, IN b int, OUT sum int)
BEGIN
    #Routine body goes here...
    DECLARE c int;
    if a is null then set a = 0; 
    end if;
  
    if b is null then set b = 0;
    end if;
    set sum  = a + b;

    select sum; #查询,返回sum结果集
END

2.Navicat调用测试存储过程

call proc_adder(2,5,@a);
select @a;

 3.java代码调用

在mapper.java中新建一个方法

/**
     * 加法计算
     * @param a
     * @param b
     * @return
     */
    Integer sumFunction(Integer a, Integer b);

在mapper.xml中新建一个查询

<!--存储过程返回结果-->
    <resultMap id="sunResult" type="com.web.bean.testBean" >
        <result column="sum" property="sum"/>
    </resultMap>

    <!--调用存储过程-->
    <select id="sumFunction"  resultMap="sunResult" parameterType="java.lang.Integer" statementType="CALLABLE">
        {call proc_adder(
          #{a,jdbcType=INTEGER,mode=IN},
	      #{b,jdbcType=INTEGER,mode=IN},
	      #{sum,jdbcType=INTEGER,mode=OUT}
        )}
    </select>

call proc_adder 执行这个存储过程 

mode=IN a和b  说明 a和b 是传的参数; 

mode=OUT sum 说明 sum 可以返回的值; 

jdbcType=INTEGER 是对应数据库类型 与上面创建存储过程的类型一致

 这样调用后就可以得到返回结果了,接下来的调用就跟平时的代码调用是一样的了。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值