springboot + MyBatisのコールOracleのストアドプロシージャ

ストアドプロシージャのパラメータはVARCHARであります

コード・ロジック:コントローラレイヤエンティティクラスオブジェクト定義エンティティ、およびサービス層DAO層を通過した後、入力パラメータentity.set割当て手順、エンティティ・クラスの割り当てを保存し、その後層DAOを介してストアドプロシージャを呼び出します

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

IN_STR 、IN  VARCHAR 
OUT_STR OUT VARCHAR
コードの表示

1-2コントローラ層

(「/ TestProを」@RequestMapping 
@ResponseBody 
公共ストリングTestPro(){
     // Oracleのストアドプロシージャ実行
     // エンティティ・クラスを入力、出力パラメータ書き込みパラメータである
     // 与えられた以下のパラメータ書く引数の(間違った数またはタイプを「ストアドプロシージャ」)へのコールで 
    HelloProEntityエンティティ= 新しい新しいHelloProEntity(); 
    entity.setIN_STR()」1" ; // 設定入力パラメータ 
    controllerService.GetTestPro(エンティティ); // エンティティサービス層渡された入力パラメータを使用して、サービス層は、ダオ層、検索に対応するダオSQLレイヤエンティティ呼び出す
    試み{ 
        文字列STR = entity.getOUT_STRを();
         戻りSTRを; 
    } キャッチ(例外E){
         リターン "NULL" 
    } 
}
コードの表示

 1-3サービス層

公共HelloProEntity GetTestPro(HelloProEntityのtestproentity){
     戻りdao.GetTestPro(testproentity)を、
}
コードの表示

1-4 dao层

公共 HelloProEntity GetTestPro(HelloProEntityのtestproentity)。
コードの表示

1-5エンティティクラス

パブリック クラス HelloProEntityが実装Serializableを{
     プライベート 静的 最終 長い serialVersionUIDの= -6556793741331167103L プライベート文字列のIN_STR。
    プライベート文字列のOUT_STR。

    パブリック文字列getIN_STR(){
         戻りIN_STRと、
    } 

    公共 ボイドsetIN_STR(文字列iN_STR){ 
        IN_STR = iN_STR。
    } 

    パブリック文字列getOUT_STR(){
         戻りOUT_STRと、
    } 

    公共 ボイド setOUT_STR(文字列oUT_STR){
        OUT_STR =oUT_STR; 
    } 

}
コードの表示

1-6マッパー

< 選択し、ID = "GetTestPro" のParameterType = "com.kh.zzkanban1.Entyties.HelloProEntity" useCache = "false"を
       するStatementTypeは= "CALLABLE" > 
   <![CDATA [  
    {JCG_TESTを呼び出す(
    #{IN_STR、モードIN =、jdbcType = VARCHAR}、
    #{OUT_STR、モード= OUT、jdbcType = VARCHAR} 
    )} 
]]>  
</ 選択>
コードの表示

 

図2は、ストアドプロシージャのパラメータDATEであります

最初のポイントの設定に基づいて、サービス層のDAO層はマッパー、コントローラ、エンティティクラスを変更、変更する必要はありません

メインノート:ストアドプロシージャの出力パラメータは、入力パラメータDATE形式、DATEとして定義されマッパーjdbcTypeで、カスタム属性、または分と秒を使用するエンティティクラスのタイムスタンプフォーマットは00:00:00になります。

得られた出力タイムスタンプの後に、新しいてSimpleDateFormat( "YYYY-MM-DD HHは:MM:SS")形式(entity.getM_GROUP_END())時刻フォーマット文字列に変換されます。

ストアドプロシージャパラメータ2-1

M_DATETIME             、IN DATE、
DATE、OUT M_SEGMENT_BEGIN 
M_SEGMENT_END OUT日付を、
DATE、OUT M_GROUP_BEGIN 
M_GROUP_END OUTのDATE、
M_SEGMENT_NO OUT INTEGER 
M_GROUP_CODE OUT VARCHAR2 
RES OUT VARCHAR2を 
コードの表示

2-1コントローラ層

( "/ GETPROを" @RequestMapping 
@ResponseBody 
公衆 PGetTimeSlotInfoEntity TestPro()がスローするSQLException { 
    PGetTimeSlotInfoEntityエンティティ = 新しい新しいPGetTimeSlotInfoEntity(); 
    てSimpleDateFormat DF = 新しい新しいてSimpleDateFormat( "MM-DD-YYYYのHH:MM:SS" ); 
    文字時間 = DF .format(新しい新しい日付()); 
    タイムスタンプTS = Timestamp.valueOf(時間); // 現在のタイムスタンプを取得 
    entity.setM_DATETIME(TS); // 入力パラメータの割り当てに日付スタンプに
    service.GetProを(エンティティ);
     を返す;エンティティを
}
コードの表示

2-2エンティティクラス

パブリック クラス PGetTimeSlotInfoEntityが実装Serializableを{
     プライベート 静的 最終 長い serialVersionUIDの= -6556793741331167103L プライベートタイムスタンプM_DATETIME。
    プライベートタイムスタンプM_SEGMENT_BEGIN。// 这里不用日、应为传不了时分秒
    プライベートタイムスタンプM_SEGMENT_END。
    プライベートタイムスタンプM_GROUP_BEGIN。
    プライベートタイムスタンプM_GROUP_END。
    プライベート文字列M_SEGMENT_NO。
    プライベート文字列のM_GROUP_CODE。
    プライベート文字列のRES。

    パブリックタイムスタンプgetM_DATETIME(){
         戻りM_DATETIMEと、
    } 

    公共 ボイドsetM_DATETIME(タイムスタンプm_DATETIME){ 
        M_DATETIME = m_DATETIME。
    } 

    公共日getM_SEGMENT_BEGIN(){
         戻りM_SEGMENT_BEGINと、
    } 

    公共 ボイドsetM_SEGMENT_BEGIN(タイムスタンプm_SEGMENT_BEGIN){ 
        M_SEGMENT_BEGIN = m_SEGMENT_BEGIN。
    } 

    公共日getM_SEGMENT_END(){
         戻りM_SEGMENT_ENDと、
    } 

    公共 ボイド setM_SEGMENT_END(タイムスタンプm_SEGMENT_END){
        M_SEGMENT_END = m_SEGMENT_END; 
    } 

    パブリックタイムスタンプgetM_GROUP_BEGIN(){
         戻りM_GROUP_BEGIN。
    } 

    公共 ボイドsetM_GROUP_BEGIN(タイムスタンプm_GROUP_BEGIN){ 
        M_GROUP_BEGIN = m_GROUP_BEGIN。
    } 

    パブリックタイムスタンプgetM_GROUP_END(){
         戻りM_GROUP_ENDと、
    } 

    公共 ボイドsetM_GROUP_END(タイムスタンプm_GROUP_END){ 
        M_GROUP_END = m_GROUP_END。
    } 

    パブリック文字列getM_SEGMENT_NO(){
         戻りM_SEGMENT_NOと、
    }

    公共 のボイドsetM_SEGMENT_NO(文字列m_SEGMENT_NO){ 
        M_SEGMENT_NO = m_SEGMENT_NO。
    } 

    パブリック文字列getM_GROUP_CODE(){
         戻りM_GROUP_CODE。
    } 

    公共 ボイドsetM_GROUP_CODE(文字列m_GROUP_CODE){ 
        M_GROUP_CODE = m_GROUP_CODE。
    } 

    パブリック文字列getRES(){
         戻りRES。
    } 

    公共 ボイドsetRES(文字列RES){ 
        RESの =のRES。
    } 

}
コードの表示

2-3マッパー

    < 選択し、ID = "GetPro" のParameterType = "com.kh.zzkanban1.Entyties.PGetTimeSlotInfoEntity" useCache = "false"を
        するStatementTypeは= "CALLABLE" > 
    <![CDATA [  
        {P_GET_TIME_SLOT_INFOを呼び出す(
        #{M_DATETIME、モードIN =、jdbcType = DATE}、
        #{M_SEGMENT_BEGIN、モード= OUT、jdbcType = DATE}、
        #{M_SEGMENT_END、モード= OUT、jdbcType = DATE}、
        #{M_GROUP_BEGIN、モード= OUT、jdbcType = DATE}、
        #{M_GROUP_END、モード= OUT、 jdbcType = DATE}、
        #{M_SEGMENT_NO、モード= OUT、jdbcTypeが= INTEGER}、
        #{M_GROUP_CODE、モード= OUT、jdbcType = VARCHAR}、
        #{RES、モード= OUT、jdbcType = VARCHAR}
        )} 
    ]]>  
    </ 選択>
コードの表示

 

おすすめ

転載: www.cnblogs.com/JICG/p/10985268.html