【Java】使用Mybatis调用SQL Server存储过程

本文介绍了如何使用SpringBoot结合Mybatis来调用SQLServer数据库的存储过程,并详细展示了存储过程的入参设置、Mybatis中XML配置、Dao层接口以及Service层的调用方法,特别强调了如何处理存储过程的回参。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

在软件开发过程中,经常会使用到存储过程,本篇文章用于讲解示例如何使用SpringBoot+Mybatis的方式调用SQL Server数据库的存储过程并且得到存储过程的回参;


一、存储过程的入参

这是存储过程的入参,用于后续Mybatis的对应;
代码如下(示例):
在这里插入图片描述

二、Mybatis中XML的编写

注意参数类型,以及参数的出入参设置;
代码如下(示例):

    <!--门诊充值-->
    <select id="outpatientRecharge" parameterType="java.util.Map" statementType="CALLABLE" resultType="java.lang.String">
        <![CDATA[
        {
                call SP_xcx_mzcz(
                #{cardNo, jdbcType=VARCHAR, mode=IN},
                #{cardtype, jdbcType=VARCHAR, mode=IN},
                #{payPlatform, jdbcType=VARCHAR, mode=IN},
                #{rechargeTime, jdbcType=VARCHAR, mode=IN},
                #{money, jdbcType=DECIMAL, mode=IN},
                #{serialNo, jdbcType=VARCHAR, mode=IN},
                #{meg, jdbcType=VARCHAR, mode=OUT},
                #{message, jdbcType=VARCHAR, mode=OUT}
                )
                }
        ]]>
    </select>

三、Dao层的代码

代码如下(示例):

    /**
     * 门诊充值
     * @param params 参数
     * @return String
     */
    String outpatientRecharge(Map<String, Object> params);

四、【重点】Service层的调用

代码如下(示例):

    public JSONObject saveCurrencyPayStoredProcedureMapping(){
        Map<String, Object> params = new HashMap<>();
        params.put("cardNo","362330200010132058");
        params.put("cardtype","1");
        params.put("payPlatform","1");
        params.put("rechargeTime","2023-07-31");
        params.put("money","100");
        params.put("serialNo","123123123");
        //这里下面两个参数,就是存储过程的回参,当存储过程执行后会赋值到这个入参中的参数里面。后续打印可见内容,
        params.put("meg","");
        params.put("message","");
        storeProcedureDao.outpatientRecharge(params);
        log.info("params == {}",params);
        return ResJsonUtil.toJsonSuccess();
    }

说明:为了能够清晰演示,所以使用了Map作为入参,也可以使用Entity作为入参,主要就在于需要在入参中定义两个的参数;而Mybatis执行完成存储过程后,会将回参赋值到设置好的出参参数中;

最后存储过程执行完成后,下面的打印示例:

2023-07-31 14:32:58.180  INFO 27640 --- [nio-7989-exec-1] c.e.whinterface.service.PayService       : params == {money=100, rechargeTime=2023-07-31, payPlatform=1, cardtype=1, message=充值成功, cardNo=362330200010138252, meg=1, serialNo=123123123}

可以看到,出参的meg和message参数已被重新赋值;接下来就可以直接获取出参的内容进行判断,执行后续的业务逻辑了;

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值