簡易書籍一覧表示アプリケーション作成(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】

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

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

【ファイル名:pom.xml】

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

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

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

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

		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;
			}
		
		}
		
		

図 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】

		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> {
		
		}
		

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

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

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

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

		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;
		
			}
		
		}
		

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

6.3.6 CSSファイルの配置

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

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

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

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

■ソースコード
【ファイル名:list.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>
		

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

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

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

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


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