Mybatis调用SQL Server存储过程的实现示例
作者:孤巷守鹤
在软件开发过程中,经常会使用到存储过程,本文就来介绍一下Mybatis调用SQL Server存储过程的实现示例,具有一定的参考价值,感兴趣的可以了解一下
前言
在软件开发过程中,经常会使用到存储过程,本篇文章用于讲解示例如何使用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参数已被重新赋值;接下来就可以直接获取出参的内容进行判断,执行后续的业务逻辑了;
到此这篇关于Mybatis调用SQL Server存储过程的实现示例的文章就介绍到这了,更多相关Mybatis调用SQL Server存储过程内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
