mybatisプロジェクトでoracleストレージ・プロシージャを呼び出す方法(procedure)


問題のようです.このブログでは、spring+springmvc+mybatisプロジェクトでoracleのストレージ・プロシージャ(procedure)を呼び出す方法について話していますが、主にmybatisの下でストレージ・プロシージャを呼び出す方法について話しています.
1、まずoralceにストレージプロセスを書く
create or replace procedure p_test(
    v_val1 in varchar2,
    v_val2 out varchar2
) is
    v_val3 varchar2(10) :='word';
begin
    v_val2 := v_val1||v_val3;
end;

この過程はどういう意味ですか.簡単にv_を入力しますval 1、プロシージャはパラメータv_を定義するval3,v_val2 = v_val1+v_val 3,出力v_val2.ちなみにoralceでストレージ・プロシージャを呼び出す方法は、次のとおりです.
declare 
    v_test1 varchar2(10);
begin
    p_test('hello ',v_test1);
    dbms_output.put_line(v_test1);
end;

明らかに、出力はhello wordです
今本題に入りますが、mybatisでどうやって呼び出しますか?
まずxmlファイルを作成し、具体的にどのようにxmlファイルを作成するか、springmvcプロジェクトでmybatisのxmlファイルを呼び出すかなどの基礎問題を作成します.前のブログを見て、spring+springmvc+mybatisプロジェクトを構築します.
次にsql文を書きます.内容は次のとおりです.
<select id="getProcedure" statementType="CALLABLE" parameterType="java.util.Map">
    {call p_test(#{val1,mode=IN,jdbcType=VARCHAR},#{val2,mode=OUT,jdbcType=VARCHAR})}
</select>

JAvaでこのように呼び出します
Map map = new HashMap<String,String>();
map.put("val1","hello ");
testMapper.getProcedure(map);//   ,testMapper      ,    testMapper    ,         ,void  
System.out.println(map.get("val2"));

このとき出力されるのはhello wordです.
特に申明!特に申明!特に申明!
ストレージ・プロシージャを呼び出すとき、xmlにはめちゃくちゃなフォーマットがないでください.一部のプログラマーは自分のコードを美化することに慣れています.これはいいことですが、ここで石を運んで自分の足を壊す可能性があります.例えば、好きな人がいます.
{
    call p_test(#{val1,mode=IN,jdbcType=VARCHAR},#{val2,mode=OUT,jdbcType=VARCHAR})
}

さわやかに見えますか?とてもさわやかで、しかしポインタの誤りを報告することができて、だから私は各位に注意して、これはコードがきれいかどうかを気にしないでください、使うことができて、{}の間で改行しないでください!改行しないで!改行しないで!改行しないで!改行しないで!改行しないで!改行しないで!
重要なことは7回言って、スペースを入れてもいいかと聞かれたら、私はただ、あなたが楽しくていいとしか言えません.
もちろん、複雑なストレージプロセスのパラメータが多く、長いので、一行を書くのは読みにくいですが、どうすればいいですか.パラメータの間で改行できます.たとえば、次のようにします.
 {call p_test(#{val1,mode=IN,jdbcType=VARCHAR},
             #{val2,mode=OUT,jdbcType=VARCHAR})}

それでもいいです.
コードの手で打つと、字が漏れたり、字が間違ったり、説明がはっきりしない現象が避けられません.皆さんの批判と指導を歓迎します.人身攻撃は絶対にしないでください.役に立つと思ったら、教えてください.励ましてください.