BLOG
ブログ

2019.04.10

[STS3.9.2]Spring BootでWEBアプリ作成(在庫管理システム) – その2

今回もWEBアプリ作成の続きをしていこうと思います。

 

前回は登録されたデータを全件取得、表示するところまで実装しました。

その続きで今回はいよいよ検索フォームに入力された条件に合致するデータのみ表示するような動作を目指します。

 

 

まずコントローラーなどを編集する前にエンティティのフィールドを少し変更したいので以下のように追加、修正しておきます。

 

検索ロジックの実装

・インターフェースの定義

 

ここでは検索ロジックを実装するためにまずはそのインターフェースを定義します。

検索をしたいのでメソッド名をsearchとし、必要な引数を設定しました。

 

・実装

 

いよいよ検索ロジックの実装をしていきます。

ここで重要なのは22行目からのsearchメソッドです。 ここでやりたいことは検索に必要なクエリを完成させ、それの問い合わせにより得た結果を返すことです。 検索フォームにはユーザーによって入力されないフィールドもあると思います。なのでそれぞれの引数に値が入力されているのかを確認しています。 値が入力されていれば、条件の一部としてクエリに条件を付け足していきます。 また、値が入力されている引数が複数あるようであればクエリに「AND」を付け足すようにしています。

 

例として、authorに「村上春樹」、titleに「ノルウェイの森」と入力されており、それ以外は入力されなかった場合、ここで完成するクエリ文は以下のようになります。

このクエリにsetParameterで値を割り当てています。

 

コントローラーの実装

それでは、実装したDAOクラスを使い検索フォームに入力された値に合致するデータを取得するようコントローラーを編集します。 なお、前回と同じように@PostConstructを使いいくつかダミーデータをエンティティオブジェクトとしてクラス内で登録していますが、ここでは省略します。

GETリクエストの際に実行されるメソッドは前回と変わりありません。

 

POSTリクエストの際には主に先ほど実装したsearchメソッドを呼び出し、返ってきた結果をModelAndViewオブジェクトに登録する流れとなっていますが、フォームのどのボックスにも値が入力されない場合はリダイレクトするようにしてあります。

 

テンプレートの作成

在庫管理

条件を記入してください






全データ表示


ISBN番号 タイトル 著者名 在庫数 ジャンル
         

今回は少し見た目も変更してみました。   以上でビルドし、アクセスすると以下のような画面が表示されます。         登録されているデータは増えていますがそれ以外は前回と同じですね。 それでは検索してみましょう。    

 

 

 

検索内容に合致したデータが表示されました。 次回は、この表示されたデータから本の詳細画面を表示するようなものを実装していきたいと思います。