[spring boot 2]DBの情報を表示させる方法

[spring boot 2]DBの情報を表示させる方法

spring bootを使って、DBから情報をselectして表示させる方法を紹介します。

前回からの続きのファイルを使いますので、参考にしてください。

https://programming-information.com/2018/11/27/post-113/

使用環境

MacBook Pro (15-inch, 2016)

Eclipse:Oxygen.3a Release (4.7.3a)

spring boot バージョン:2.1.0

使用ライブラリ:DevTool,Lombok,H2,JDBC,Thymeleaf,Web

作成するプログラム

「ユーザーIDを入力」のテキストフィールドに「1」を入力してクリックを押すと

データベースからIDが「1」のユーザー情報を取り出し、表示させます。

使用するコード

使用するファイルは以下の8つ

① application.properties

② schema.sql

③ data.sql

④ HelloRepository.java

⑤ User.java

⑥ HelloService.java

⑦ hello.html

⑧ HomeController.java

① application.properties

これを記入することで、spring boot起動時に2つのsqlファイルを読み込んでデータベースに 作成してくれます。

ライブラリでH2を使用しているので、spring boot停止とともにデータベースも削除されます。

② schema.sql

テーブルを作成します。

③ data.sql

作成したテーブルに、インサートします

④ HelloRepository.java

クラス名の上に @Repositoryをつけることで、DIに登録されます。

JdbcTemplateの上に@Autowiredをつけることで、インスタンスを取得するような形になります。(厳密には違うらしい。。。)

⑤ User.java

 

@Dataをつけることで、setter,getterなどを自動で作成してくれるLombokの機能を使うことができます。

このようにDTOの役割をするクラスを、ドメインクラスと呼びます。

⑥ HelloService.java

クラス名の上に@Serviceをつけることで、DIに登録されます。

@AutowiredでHelloRepositoryをインスタンス化しています。

HelloRepository.javaでセレクトしたデータを一度変数に入れて

User.javaのインスタンスにしまっているように考えればOKです。

⑦ hello.html

「/hello/db」に対して、name=”text2″の内容を送っています。

これを受け取るのが次のController

⑧ HomeController.java

htmlからIDの値を受け取り、

helloService.userSelectOne()に受け取ったidを入れてデータベースからセレクトし、

それをmodel.addAttributeで保存。

helloResponseDB.htmlにページを飛ばす

といった流れです。