Spring Boot MySQL JDBC 接続 設定

今回は、タイトル通りSpringBootでMySQLにJDBC接続する際のメモとなります。

尚、SpringBootのプロジェクトは、以下の要領で作成したものを前提としてメモしています。

 

SpringBoot Hello World 表示 画面遷移 実装

Spring boot 入門

データベース接続設定

Propertiesファイルに以下の内容を追加します。

  • spring.datasource.url=jdbc:mysql://ホスト名:ポート名/接続DB名?serverTimezone=JST
  • spring.datasource.username=DBユーザー名
  • spring.datasource.password=DBユーザーパスワード
  • spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

以下は、MAMPをインストールした時のMySQLのデフォルト設定の内容に合わせた指定です。

テストとして、MAMPを起動した状態でMySQLのDBテーブルに接続してみます。

spring.datasource.url=jdbc:mysql://127.0.0.1:8889/SpringBoot_test_01?serverTimezone=JST
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

※application.propertiesの設定項目は、以下の公式ドキュメントに記載されております。

https://spring.pleiades.io/spring-boot/docs/current/reference/html/application-properties.html#appendix.application-properties


Maven依存設定

今回は、MavenでMySQL接続・JDBC設定を行います。

以下の内容をpom.xmlに追加します。

<!-- MySql設定 -->
<dependency>
  <groupId>mysql</groupId>
  <artifactId>mysql-connector-java</artifactId>
  <scope>runtime</scope>
</dependency>
<!-- JDBC設定 -->
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-data-jdbc</artifactId>
</dependency>

尚、pom.xmlを修正しても、修正内容がプロジェクトに反映されない場合があります。

その場合には、以下をお試しください。

プロジェクト -> 右クリックメニュー -> Maven -> プロジェクトの更新

 


SQLクエリ実行 クラス実装

JdbcTemplateを利用して、SQLクエリを実行するクラスを実装します。

package com.example.demo;

import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class UserSelectController {
	@Autowired
	JdbcTemplate jdbcTemplate;

	// userテーブルの全データ抽出クエリ実行
	@RequestMapping(path="/users", method=RequestMethod.GET)
	public String userAll() {
		return jdbcTemplate.queryForList("SELEC * FROM user").toString();
	}
	// userテーブルのID抽出
	@RequestMapping(path="/users/{id}", method=RequestMethod.GET)
	public String userMatchId(@PathVariable String id) {
		List<Map<String,Object>> list;
		list = jdbcTemplate.queryForList("SELEC * FROM user WHERE id = ?", id);
		return list.toString();
	}
}

JdbcTemplateクラスのqueryForListは、引数として文字列のSQLを渡して呼び出すと、

DB接続を行い、DBから受け取ったデータをList<Map<String,Object>>型で返却してくれます。

試しに、userテーブルの全レコード(全カラム)を表示するメソッドと、

userテーブルのIDが指定値と一致するレコード(全カラム)を表示するメソッドを実装して、

動作を確認してみます。

※userMatchIdメソッドの方は、わざわざ変数宣言していますが特に意味はありません。

org.springframework.jdbc.core.JdbcTemplate.queryForList(String sql, @Nullable Object… args) throws DataAccessExceptionの型を確認する意味で、敢えて変数宣言しています。

 

あと、今回は非常に簡単に確認を行うだけなので、

画面表示用のテンプレート(html)は用意せず、URL指定でGETされた結果をそのまま表示したいので、

toString()でそのままの形で文字列返却しています。

 


 

実行確認

プロジェクトのビルドを行なった後、通常の起動方法でサーバーを起動します。

サーバーが起動して、ログが正常に出力されたらブラウザで確認を行います。

localhost:ポート名/urlパターンの形式でブラウザのURL欄に入力してアクセスします。

 

 

 

問題なく、DBテーブルの内容が表示されました。

試しに、id指定の方も確認してみます。

 


 

今回のメモは以上となります。

今回は、JDBCでMySQLに接続する内容だったので、

今度はORMなどを使った方法もメモしたいと思います。

 

都内でエンジニアをやっています。 2017年に脱サラ(法人設立)しました。 仕事で調べたことや、気になったことをメモしています。
投稿を作成しました 172

Spring Boot MySQL JDBC 接続 設定」への3件のフィードバック

  1. 今まで見てきたどんなサイトよりもわかりやすくて、、、草をひとつまみ、、、、
    勉強になります。。。。

  2. DB接続で詰まっていましたが、他のどのサイトよりもわかりやすく、設定も簡潔でしたので非常に助かりました。
    本当にありがとうございます!

    1. コメント頂きありがとうございます!
      そう言って頂けると励みになります。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


関連投稿

検索語を上に入力し、 Enter キーを押して検索します。キャンセルするには ESC を押してください。

トップに戻る