Spring Boot DB連携

Spring Bootアプリケーションで定義ファイルから取得した数値(Integer型)を利用してSQLを実行してみた

Spring Bootアプリケーションでは、application.propertiesの値を@Valueアノテーションを利用して取得できるが、その値(数値)をInteger型の変数に格納し、SQLで利用することもできる。

今回は、SQL Serverに接続するSQLにおいて、定義ファイルから取得した数値(Integer型)を利用してみたので、そのサンプルプログラムを共有する。

前提条件

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

Spring Bootアプリケーションで定義ファイルから取得した数値(文字列型)を利用してSQLを実行してみたSpring Bootアプリケーションでは、application.propertiesの値を@Valueアノテーションを利用して取得で...

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

作成したサンプルプログラムの構成は以下の通り。
サンプルプログラムの構成
なお、上記の赤枠は、前提条件のプログラムから変更したプログラムである。

application.propertiesの内容は以下の通りで、SQL実行時に利用する数値を指定している。

また、USER_DATAテーブルにアクセスするためのMapperの内容は以下の通りで、propNumをInteger型として、生年月日が1990年6月20日のpropNum日前~1990年6月20日のpropNum日後までのデータを取得するようにしている。

さらに、Demoサービスクラスの内容は以下の通りで、SQL実行時に利用する数値の取得や、USER_DATAテーブルにアクセスするMapperの呼び出しを行っている。

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



サラリーマン型フリーランスSEという働き方でお金の不安を解消しよう先日、「サラリーマン型フリーランスSE」という働き方を紹介するYouTube動画を視聴しましたので、その内容をご紹介します。 「サ...

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

サンプルプログラムの実行結果は、以下の通り。

1) SQL ServerのUSER_DATAテーブルには、以下のデータを入れておく。
サンプルプログラムの実行結果_1

2) 1)の状態でDemoサービスクラスの「DemoApplication.java」を実行した結果は以下の通りで、prop1を利用した場合は生年月日が1990年6月15日~1990年6月25日(propNum=5)のデータが、prop2, prop3を利用した場合は生年月日が1990年6月20日(propNum=0)のデータが、それぞれ取得できることが確認できる。
サンプルプログラムの実行結果_2

3) UserDataMapper.xmlで、以下の赤枠のように、propNumのIsNullを除外する。
サンプルプログラムの実行結果_3

4) 3)の状態でDemoサービスクラスの「DemoApplication.java」を実行した結果は以下の通りで、prop1,prop3を利用した場合は2)と同じで、prop2を利用した場合は(propNumがNULL値のため)1件もレコードが検索されないことが確認できる。
サンプルプログラムの実行結果_4

5) A5M2を利用して、SQL Server上で、UserDataMapper.xmlに記載したWHERE句の条件でSQL実行した結果は、以下の通り。

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

6) A5M2を利用して、Oracle上で、UserDataMapper.xmlに記載したWHERE句の条件でSQL実行した結果は、以下の通り。

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

7) A5M2を利用して、MySQL上で、UserDataMapper.xmlに記載したWHERE句の条件でSQL実行した結果は、以下の通り。

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

8) A5M2を利用して、PostgreSQL上で、UserDataMapper.xmlに記載したWHERE句の条件でSQL実行した結果は、以下の通り。

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

要点まとめ

  • Spring Bootアプリケーションで定義ファイルから取得した数値をSQLで利用する際、String型でなくInteger型を利用することもできる。