[Java] Mybatis を使用して SQL Server ストアド プロシージャを呼び出す

序文

ソフトウェア開発のプロセスではストアド プロシージャがよく使用されますが、この記事では SpringBoot+Mybatis を使用して SQL Server データベースのストアド プロシージャを呼び出し、ストアド プロシージャの戻りパラメータを取得する方法を説明します。


1.ストアドプロシージャの入力パラメータ

这是存储过程的入参,用于后续Mybatis的对应;
コードは次のとおりです(例)。
ここに画像の説明を挿入します

2. 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>

3.Daoレイヤーコード

コードは次のとおりです(例)。

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

4. 【ポイント】サービス層の呼び出し

コードは次のとおりです(例)。

    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 も入力パラメーターとして使用できます。主な理由は、入力パラメーターに 2 つのパラメーターを定義する必要があることと、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 パラメータが再割り当てされていることがわかり、出力パラメータの内容を直接取得して判定し、後続のビジネス ロジックを実行できます。

おすすめ

転載: blog.csdn.net/qq_42666609/article/details/132024255