簡易書籍一覧表示アプリケーション作成(JPA版)

6.3 簡易書籍一覧表示アプリケーション作成(JPA版)

6.3.1 アプリケーション概要

1 アプリケーション作成の目的

書籍管理システムをもとに、JPAを利用した簡単なデータベースアクセス方法を学習していきます。

2 簡易書籍一覧表示アプリケーション(JPA版)プロジェクト構成(完成状態)


6.3.2 プロジェクトの準備

1 プロジェクトの作成

図 6.3 1:新規プロジェクト作成画面1

画面に「新規 Spring スターター・プロジェクト」というダイアログウィンドウが現れます。ここで、作成するプロジェクトの設定を入力していきます。以下を参考に入力してください。

図 6.3 2:新規プロジェクト作成画面2


Dependencies」の設定を行う画面では、「Spring Web」「Thymeleaf」「Spring Data JPA」「MySQL Driver」という項目を選択しておきましょう。(「Spring Boot DevTools」「Lombok」のチェックはデフォルトで付くためそのままにしておきます。)

図 6.3 3:新規プロジェクト作成画面3

そのまま「完了」ボタンで終了してください。

図 6.3 4:新規プロジェクト作成画面4

図 6.3 5:新規プロジェクト作成画面5


2 パッケージの作成

「src/main/java」フォルダ内に下記のパッケージを作成する


① jp.co.f1.spring.bms.controller
② jp.co.f1.spring.bms.entity
③ jp.co.f1.spring.bms.repository


3 DB接続設定

「src/main/resources」フォルダ内の「application.properties」に以下に示すソースコードを記述する

【ファイル名:application.properties】

[html] spring.datasource.driverClassName=org.mariadb.jdbc.Driver spring.datasource.url=jdbc:mariadb://localhost:3306/mybookdb spring.datasource.username=root spring.datasource.password=root123 [/html]

また、プロジェクトフォルダ直下の「pom.xml」のdependencyタグのgroupIdがcom.mysqlになっている項目について、以下の内容に修正する。

【ファイル名:pom.xml】

6.3.3 エンティティクラスの作成

1 「jp.co.f1.spring.bms.entity」パッケージに「Book.java」の作成とソースコードの記述

作成した「Book」クラスファイルに以下に示すソースコードを記述する。

■ソースコード
【ファイル名:Book.java】

[html] package jp.co.f1.spring.bms.entity; import jakarta.persistence.Entity; import jakarta.persistence.Table; import jakarta.persistence.Id; import jakarta.persistence.Column; @Entity @Table(name = “bookinfo”) public class Book { //ISBN @Id @Column(length = 20) private String isbn; public String getIsbn() { return isbn; } public void setIsbn(String isbn) { this.isbn = isbn; } //タイトル @Column(length = 100, nullable = true) private String title; public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } //価格 @Column(length = 11, nullable = true) private String price; public String getPrice() { return price; } public void setPrice(String price) { this.price = price; } } [/html]

図 6.3 6:Book.javaソースコード記述結果

6.3.4 リポジトリクラスの作成

1 「jp.co.f1.spring.bms.repository」パッケージに「BookRepository.java」の作成

③ 「BookRepository.java」クラスファイル(インターフェース)の作成

図 6.3 7:クラスファイルの作成画面1

図 6.3 8:クラスファイルの作成画面2

図 6.3 9:クラスファイルの作成画面3

作成した「BookRepository」クラスファイルに以下に示すソースコードを記述(追記)する。

■ソースコード
【ファイル名:BookRepository.java】

[html] package jp.co.f1.spring.bms.repository; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; import jp.co.f1.spring.bms.entity.Book; @Repository public interface BookRepository extends JpaRepository<Book, String> { } [/html]

図 6.3 10:BookRepository.javaソースコード記述結果

6.3.5 コントローラークラスの作成

1 「jp.co.f1.spring.bms.controller」パッケージに「BmsController.java」の作成とソースコードの記述
作成した「BmsController」クラスファイルに以下に示すソースコードを記述する。

■ソースコード
【ファイル名:BmsController.java】

[html] package jp.co.f1.spring.bms.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.servlet.ModelAndView; import org.springframework.beans.factory.annotation.Autowired; import jp.co.f1.spring.bms.repository.BookRepository; import jp.co.f1.spring.bms.entity.Book; @Controller public class BmsController { // Repositoryインターフェースを自動インスタンス化 @Autowired private BookRepository bookinfo; /* * 「/list」へアクセスがあった場合 */ @GetMapping(“/list”) public ModelAndView list(ModelAndView mav) { // bookinfoテーブルから全件取得 Iterable<Book> book_list = bookinfo.findAll(); // Viewに渡す変数をModelに格納 mav.addObject(“book_list”, book_list); // 画面に出力するViewを指定 mav.setViewName(“list”); // ModelとView情報を返す return mav; } } [/html]

図 6.3 11:プロジェクト準備完了

6.3.6 CSSファイルの配置

1 「src/main/resources」パッケージの「static」フォルダ内に「css」フォルダを作成
2 1で作成した「css」フォルダ内に下記からダウンロードした「style.css」を配置

https://migration-test.kanda-it-school-kensyu.com/docs/sample/text/

6.3.7 テンプレートファイルの作成

1 「src/main/resources」パッケージの「templates」フォルダ内に「list.html」を作成
2 1で作成した「list.html」ファイルに以下に示すソースコードを記述する。

■ソースコード
【ファイル名:list.html】

[html] <!DOCTYPE html> <html> <head> <meta charset=”UTF-8″> <title>書籍一覧</title> <link rel=”stylesheet” th:href=”@{/css/style.css}”> </head> <body> <!– ブラウザ全体 –> <div id=”wrap”> <!–ヘッダー部分 –> <header> <div class=”container”> <h1>書籍管理システムSpring版 Ver.0.5</h1> </div> </header> <!– メニュー部分 –> <div id=”menu”> <div class=”container”> <!– ナビゲーション –> <div id=”nav”> <ul> <li><a href=”#”>[メニュー]</a></li> <li><a href=”/insert”>[書籍登録]</a></li> </ul> </div> <!– ページタイトル –> <div id=”page_title”> <h2>書籍一覧</h2> </div> </div> </div> <!– 書籍一覧のコンテンツ部分 –> <div id=”main” class=”container”> <!– 検索フォーム –> <form class=”inline-block” action=”/search” > ISBN <input type=”text” name=”isbn”> TITLE <input type=”text” name=”title”> 価格 <input type=”text” name=”price”> <input type=”submit” value=”検索”> </form> <form class=”inline-block” action=”/list” > <input type=”submit” value=”全件表示”> </form> <!– 書籍情報リスト –> <table class=”list-table”> <thead> <tr> <th>ISBN</th> <th>TITLE</th> <th>価格</th> <th>変更 / 削除</th> </tr> </thead> <tbody th:if=”${book_list.size() >= 1}”> <tr th:each=”book : ${book_list}”> <td><a href=”#” th:text=”${book.isbn}”></a></td> <td th:text=”${book.title}”></td> <td th:text=”${book.price}”></td> <td> <a href=”#”>変更</a> <a href=”#”>削除</a> </td> </tr> </tbody> </table> </div> <!– フッター部分 –> <footer> <div class=”container”> <h4>Copyright&copy; 2025 All Right Reserved.</h4> </div> </footer> </div> </body> </html> [/html]

6.3.8 アプリケーションの実行

1 XAMPP(MariaDB)の起動
2 アプリケーションの実行
3 アプリケーションにアクセス(書籍一覧画面)

以下のアドレスから簡易書籍一覧表示アプリケーションにアクセスします。
URL:http://localhost:8080/list

図 6.3 12:アプリケーションアクセス画面(書籍一覧画面)


NEXT>> 6.4 簡易書籍一覧表示アプリケーションの説明(JPA版)