Spring Boot DB連携

Spring BootのMyBatis上でPL/SQLを呼び出してみた

今回は、Spring BootのMyBatis上でPL/SQLプログラムを呼び出すサンプルプログラムを作成してみたので、共有する。以前作成したプログラムの、user_dataテーブルへのデータ作成・更新・削除処理をストアドプログラムに変更している。

前提条件

下記記事の実装が完了していること

Spring Bootで全角チェック処理を行う独自アノテーションを作成してみたSpring Bootの独自アノテーションで、特定のフィールドに対するチェック処理も実装することができる。今回は、特定のフィールドの全角...

サンプルプログラムの作成

今回作成したPL/SQLプログラムの内容は以下の通りで、user_data_sql パッケージとuser_data_sql パッケージ本体を作成し、user_dataテーブルへのデータ作成・更新・削除処理を記載している。



また、上記PL/SQLプログラムのコンパイルは、下図のように実行している。
user_data_packageコンパイル

user_data_package_bodyコンパイル

さらに、Spring Bootのサンプルプログラムの構成は以下の通り。
サンプルプログラムの構成

上記の赤枠「UserDataMapper.xml」は、前提条件のプログラムから変更したプログラムで、内容は下記の通り。

deleteById・create・update内で、「call (パッケージ名).(プロシージャ名)」という形で、PL/SQLプログラムの呼び出しを行っている。また、PL/SQLプログラムを呼び出すタグはselectタグとし、「statementType=”CALLABLE”」を付与している。

その他のソースコード内容は、以下のサイトを参照のこと。
https://github.com/purin-it/java/tree/master/spring-boot-mybatis-plsql/demo

サンプルプログラムの実行結果

画面上でのサンプルプログラム実行結果は以下の記事と同じ結果となる。

SQLログ出力内容をカスタマイズしてみた今回は、SQLログ出力内容をカスタマイズし、SQLの実行時間や呼出メソッドをSQLログに出力してみたので、そのサンプルプログラムを共有す...

また、ログ出力内容は、データ追加を行った場合は以下の通り。
ログ出力内容

要点まとめ

  • MyBatis上でPL/SQLプログラムを呼び出すためには、MyBatisのXMLプログラム内で、selectタグで「statementType=”CALLABLE”」を付与した上で、「call (PL/SQLプログラム名)」という形で呼び出せばよい。