Spring Boot DB連携

Spring BootのWEB画面上で、MyBatisによるOracle接続を実装してみた

今回は、Oracle接続する処理をMyBatisにより実装してみたので、そのサンプルプログラムを共有する。MyBatisを利用すると、SQL文をそのまま利用することができるため、これまでのJPAと比べ、複数のテーブル結合を含む複雑なSQL文に対しても容易に対応できる。

前提条件

下記サイトのソースコード実装が完了していること。

Spring BootのWEB画面上でCRUDを含むOracleアクセス処理を実装してみた(ソースコード編)今回も、C(Create)・R(Read)・U(Update)・D(Delete)を一通り含むOracle接続処理を含むサンプルプログラ...

また、テーブル「m_sex」を新規作成していること。実行したSQLは以下の通り。

上記SQLを実行した結果は下図の通り。
m_sex_テーブルデータ

完成した画面イメージ

下記サイトの「完成した画面イメージの共有」を参照のこと。

Spring BootのWEB画面上でCRUDを含むOracleアクセス処理を実装してみた(完成イメージ編)今回は、C(Create)・R(Read)・U(Update)・D(Delete)を一通り含むOracle接続処理をSpring Boo...

作成したサンプルプログラムの内容

作成したサンプルプログラムの構成は以下の通り。「前提条件」で記載したソースコードと異なるプログラムを赤枠で囲っている。
サンプルプログラムの構成

「build.gradle」は下記の通りで、「mybatis-spring-boot-starter」を追加している。

また、「UserData.java」は下記の通りで、USER_DATAテーブルの各項目値と、性別(文字列)を指定している。
性別(文字列)は、M_SEXテーブルから取得したSEX_VALUEの値が入る。

また、「UserDataMapper.java」は下記の通りで、USER_DATAテーブルとアクセスする処理を記載している。「@Mapper」「@Select」「@Insert」「@Delete」「@Update」の各アノテーションを利用している。さらに、findAllメソッドでは、2テーブルを結合した結果を取得している。

さらに、「DemoForm.java」は、以下のように、性別(文字列)を追加している。

また、「UserDataMapper.java」を呼び出すコントローラ処理「DemoController.java」は下記の通り。

また、「list.html」は以下の通りで、sex_valueの値を直接表示するようにしている。

さらに、「application.properties」は以下の通りで、下2行でSQLログ出力の定義を行っている。

上記「application.properties」によるコンソールログ出力例は以下の通り。
mybatis_コンソールログ

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

要点まとめ

  • MyBatisを利用すると、複雑なSQL文に対しても容易に対応できる。
  • MyBatisを利用できるようにするには、build.gradleに「mybatis-spring-boot-starter」を追加する。
  • エンティティクラスには、テーブルの各項目値を指定すればよい。
  • テーブルにアクセスするMapperクラスは、クラスに「@Mapper」を付与し、各メソッドに「@Select」「@Insert」「@Delete」「@Update」のいずれかを付与すればよい。
  • SQLログ・バインドパラメータの出力定義は、application.propertiesに記載する。