今日よりちょっと賢い明日、今よりずっと自由な未来

Liberal Arts & IT

IT

初めてのSpring Boot でDB更新(×eclipse, MySQL)

更新日:

Spling BootでDB更新ができるようになるまでの経緯をメモします。

事前準備

Eclipseのダウンロード

公式サイトから最新版をダウンロードします。

https://mergedoc.osdn.jp/

Pleiades All in Oneの最新版から、JavaのFull EditionまたはStandard Editionをダウンロードします。
Full Editionをダウンロードした方が日本語化等まで完了していて楽なのですが、容量が大きくて時間がかかるのでStandard Editionをダウンロードしました。

JDKのインストール(確認)

以下のように、コマンドプロンプトからバージョンを調べた時に結果が出ていれば既にインストールされています。
バージョンが表示されなかった場合は、JDKのインストールが必要です。

インストールが必要だった場合の参考:https://codeforfun.jp/how-to-install-java-jdk-on-windows-and-mac/

MySQLのインストール(確認)

インストールが必要だった場合の参考:https://www.dbonline.jp/mysql/install/index1.html

Spring Tool Suite(STS)のインストール

ヘッダーのヘルプ(H)
→Eclipseマーケットプレース
→Spring Tool Suiteで検索(Goを押下)
→画面の指示に従って確認、完了を押下

参考:https://medium-company.com/sts%e3%82%a4%e3%83%b3%e3%82%b9%e3%83%88%e3%83%bc%e3%83%ab%e6%89%8b%e9%a0%86/

プロジェクトの作成

1.  ヘッダーのファイル→新規→プロジェクト(R)

2. Spring Boot>Spring スターター・プロジェクト

3. プロジェクトの基本設定
タイプでGradleを選択した場合はbuild.gradle、Mavenを選択した場合はpom.xmlが管理ファイルになります。
どちらを選んでも、追加で何かをインストールする時以外、大きな違いはないかと思います。

4.機能の選択
ここで選択しておくと、後でpom.xml等を編集する必要がなくなります。
選択しなかったときは後続でMySQLに接続しようとしたときに「Cannot load driver class: com.mysql.cj.jdbc.Driver」と出てしまいました。(pom.xml/build.gradleの設定不足)

  • Lombok
  • Spring Data JPA
  • MySQL Driver
  • Thymeleaf
  • Spring Web

5. 画面の指示に従って「次へ」と「完了」を押し、プロジェクトを作成します。

6. 4番で選択した機能が、pom.xml/build.gradleに表れているか確認します。
作成したアプリ名直下の、pom.xmlまたはbuild.gradleに設定ファイルがあります。
dependenciesに、先ほど選択した機能が含まれているはずです

参考:https://medium-company.com/spring-boot%e7%92%b0%e5%a2%83%e6%a7%8b%e7%af%89/

MySQLの接続設定

DBとして事前にインストールしたMySQLを利用します。

コマンドプロンプトを開いて、MySQLを起動します。

パスワードを入力してログインしたら、今回のプロジェクトで使うDBを用意します。

データベース一覧を確認して、作成したデータベース名が表示されることが確認出来たら成功です。

src>resources>application.propertiesを開き、以下入力します。

この状態で起動できれば成功です。
プロジェクトを右クリック→実行→Spring Bootアプリケーションを選択し、コンソールにエラーメッセージが表示されないことを確認します。

画面に文字を表示させる

とりあえず、画面に何かを表示させてみましょう。
2つのファイルを作成します。
1つはHTMLを呼び出すJavaファイル(コントローラー)で、src>main>javaの中に作成します。
もう一つは画面表示のHTMLファイルで、src>main>resources>templatesの中に作成します。
ファイルはヘッダーのファイル(F)>新規で作成できます。

UserController.java
value=""のURLにアクセスされたら、index.htmlを返します。

index.html

MySQLの接続確認で既にアプリは起動済みなので、以下にアクセスします。

http://localhost:8080/

シンプルに、index.htmlに書いた文字が表示されます。

DBを表示、作成、更新 (CRUD)

いよいよ、DBを使います。CRUDと言いながら、削除は使わないのでCRUです。

テーブルを作成

MySQLからテーブルを作成します。

Javaファイル/HTMLファイルの更新

以下、Javaファイルはmain>java>com>example>demo配下、htmlファイルはmain>resources>templates配下に作ります。

最終的なファイルの数がこちらです。赤い印のファイルを新規作成、更新します。

エンティティ (User.java)

テーブルごとに、エンティティファイルが必要になります。

ポイントはcreated_dataのupdatable=false.

作成日は一度登録したら更新しないので、このような設定にしておきます。

レポジトリ (UserRepository.java)

エンティティのUserを更新するために必要です。

リクエスト (UserRequest.java)

Data Transfer Object。HTMLからDBを更新するときに、データを格納するオブジェクトを定義します。
Bean Validationなどを使って、DBに登録しようとしているオブジェクトの桁数や型が正しいかチェックする機能を追加することもできます。

サービス (UserService.java)

コントローラーで呼び出す具体的な処理を書く場所です。

コントローラー (UserController.java)

index.htmlを表示させるために作ったコントローラーに、追記します。

一覧表示画面 (list.html)

bootstrapを読み込んでいるので、CSSを書かなくてもクラスを付与するだけでそれなりのデザインになります。

新規作成画面 (add.html)

UserRequest.javaに書いた項目は作成可能です。

更新画面 (update.html)

更新前のレコードが初期入力されている状態になります。

完成

一覧表示
新規作成
更新

さらに頑張るなら、

  • 削除日付が入力されたレコードは非表示(一覧画面を全量表示ではなくフィルターをかける)
  • 削除日付を入力できるようにする
  • データの追加、更新をするときにバリデーションチェックする
  • 一覧のCSV出力

とかですかね

参考

レコードの新規作成:https://medium-company.com/thymeleaf%E3%81%A7post%E3%81%97%E3%81%9F%E3%83%87%E3%83%BC%E3%82%BF%E3%82%92jpa%E3%81%A7%E7%99%BB%E9%8C%B2/

レコードの更新:https://itsakura.com/sb-sqlserver-jdbc-upd

-IT

Copyright© Liberal Arts & IT , 2022 All Rights Reserved Powered by STINGER.