簡易書籍検索アプリケーション作成(EntityManager版)

8.2 簡易書籍検索アプリケーション作成(EntityManager版)

8.2.1 アプリケーション概要

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

7.2で作成したプロジェクトをもとに、EntityManagerを利用したより高度なデータベースアクセス方法を学習していきます。

2 簡易書籍検索アプリケーション(EntityManager版)プロジェクト構成(完成状態)

8.2.2 DAOクラスの作成

1 「src/main/java」パッケージ内に「jp.co.f1.spring.bms.dao」パッケージを作成
2 1で作成した「jp.co.f1.spring.bms.dao」パッケージ内に「BookDao.java」を作成
3 2で作成した「BookDao.java」ファイルに以下に示すソースコードを記述する。

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

1package jp.co.f1.spring.bms.dao;
2 
3import org.springframework.stereotype.Repository;
4 
5import jakarta.persistence.EntityManager;
6import jakarta.persistence.criteria.CriteriaBuilder;
7import jakarta.persistence.criteria.CriteriaQuery;
8import jakarta.persistence.criteria.Root;
9import java.util.ArrayList;
10 
11import jp.co.f1.spring.bms.entity.Book;
12 
13@Repository
14public class BookDao {
15 
16    // エンティティマネージャー
17    private EntityManager entityManager;
18 
19    // クエリ生成用インスタンス
20    private CriteriaBuilder builder;
21 
22    // クエリ実行用インスタンス
23    private CriteriaQuery<Book> query;
24 
25    // 検索されるエンティティのルート
26    private Root<Book> root;
27 
28    /**
29     * コンストラクタ(DB接続準備)
30     */
31    public BookDao(EntityManager entityManager) {
32        // EntityManager取得
33        this.entityManager = entityManager;
34        // クエリ生成用インスタンス
35        builder = entityManager.getCriteriaBuilder();
36        // クエリ実行用インスタンス
37        query = builder.createQuery(Book.class);
38        // 検索されるエンティティのルート
39        root = query.from(Book.class);
40    }
41 
42    /**
43     * 書籍情報検索
44     * @param String isbn
45     * @param String title
46     * @param String price
47     * @return ArrayList<Book> book_list
48     */
49    public ArrayList<Book> find(String isbn, String title, String price) {
50        // SELECT句設定
51        query.select(root);
52 
53        // WHERE句設定
54        query.where(
55            builder.like(root.get("isbn"), "%" + isbn + "%"),
56            builder.like(root.get("title"), "%" + title + "%"),
57            builder.like(root.get("price"), "%" + price + "%")
58        );
59 
60        // クエリ実行
61        return (ArrayList<Book>)entityManager.createQuery(query).getResultList();
62    }
63 
64}

8.2.3 コントローラークラスの修正

1 「BmsController」クラスファイルに以下に示すソースコードを追記する。

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

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

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

以下のアドレスから簡易書籍一覧表示アプリケーションにアクセスします。
URL:http://localhost:8080/list
図 8.2 1:アプリケーションアクセス画面(書籍一覧画面)
図 8.2 2:アプリケーションアクセス画面(書籍検索結果)


NEXT>> 8.3 簡易書籍検索アプリケーションの説明(EntityManager版)

f