目次 > 第2章 Server(Web)版チュートリアル > 2.7 一覧表示 > 2.7.3 SQLとビジネスロジッククラスの作成
2.7.3 SQLとビジネスロジッククラスの作成
本項では、「一覧画面」に表示するデータを取得するSQL文とデータ件数を取得するSQL文を作成し、1ページに表示するデータを取得するビジネスロックを作成する。
手順
本項では以下の作業が必要になる。
(1) SQL設定ファイルの編集
- “terasoluna-spring-thin-blank\sources\sqlMap.xml”を開き、以下のSQLを追加する。
<!-- 全ユーザを取得する --> <select id="getUsers" resultClass="jp.terasoluna.thin.tutorial.web.usermanager.vo.SelectUserOutput"> SELECT ID, NAME, AGE, BIRTH FROM USERLIST </select> <!-- 登録されているユーザの件数を取得する --> <select id="getUserCount" resultClass="java.lang.String" resultSetType="SCROLL_INSENSITIVE"> SELECT COUNT(ID) FROM USERLIST </select>
(2) ビジネスロジッククラスの作成
- “terasoluna-spring-thin-blank\sources”を右クリックする。
- 「新規」→「クラス」を選択する。
- 以下の通り入力し、「終了」ボタンを押下する。
- パッケージ:jp.terasoluna.thin.tutorial.web.usermanager.blogic
- 名前:ListBLogic
- インターフェース:jp.terasoluna.fw.service.thin.BLogic
- 生成されたListBLogicクラスを以下のように編集する。
package jp.terasoluna.thin.tutorial.web.usermanager.blogic; import java.util.List; import jp.terasoluna.fw.dao.QueryDAO; import jp.terasoluna.fw.service.thin.BLogic; import jp.terasoluna.fw.service.thin.BLogicResult; import jp.terasoluna.thin.tutorial.web.usermanager.dto.ListInput; import jp.terasoluna.thin.tutorial.web.usermanager.dto.ListOutput; import jp.terasoluna.thin.tutorial.web.usermanager.vo.SelectUserOutput; /** * 一覧データを取得するビジネスロジック。 * */ public class ListBLogic implements BLogic<ListInput> { /** * QueryDAO。 * Springによりインスタンス生成され設定される。 */ private QueryDAO queryDAO = null; /** * 一覧データ取得処理を行う */ public BLogicResult execute(ListInput param) { String strIndex = param.getStartIndex(); String strRow = param.getRow(); int startIndex = 0; int row = 10; if (strIndex != null) { startIndex = Integer.parseInt(strIndex); } if (strRow != null) { row = Integer.parseInt(strRow); } //件数を取得する String totalCount = queryDAO.executeForObject("getUserCount", null, String.class); //一覧データを取得する List<SelectUserOutput> users = queryDAO.executeForObjectList("getUsers", null, startIndex, row); //ビジネスロジックの出力クラスに結果を設定する ListOutput output = new ListOutput(); output.setUsers(users); output.setTotalCount(totalCount); BLogicResult result = new BLogicResult(); result.setResultObject(output); result.setResultString("success"); return result; } /** * QueryDAOを設定する。 * @param queryDAO */ public void setQueryDAO(QueryDAO queryDAO) { this.queryDAO = queryDAO; } }
QueryDAOの利用方法
「2.6 登録処理 2.6.4 ビジネスロジッククラスの作成とDAOの設定」では、結果を1件取得する際の利用方法について説明した。
SELECT文の結果が複数件である場合、QueryDAOのexecuteForObjectListメソッドを利用することで、実行結果を指定された型のListで受け取ることができる。
以下に引数を示す。
- 第1引数:SQLID
- 第2引数:入力バリューオブジェクト
また、QueryDAOでは指定した行数分の結果のみ取得する機能を提供しており、以下の引数を追加することで開始インデックスから指定した行数分の結果を取得することができる。
- 第3引数:開始インデックス
- 第4引数:取得行数
本節のビジネスロジックでは1ページ分のデータを取得するため、下記のように、入力オブジェクトとして渡されてきた表示開始インデックス(startIndex)と表示行数(row)を渡す。
List<SelectUserOutput> users = queryDAO.executeForObjectList("getUsers", null, startIndex, row);
(3) Spring設定ファイルの編集
作成したビジネスロジッククラスをSpring設定ファイルに設定する。
- “terasoluna-spring-thin-blank\webapps\WEB-INF\userManager\userManagerContext.xml”を開き、以下のビジネスロジックの設定を追加する。
<!-- アクション定義 --> ・・・略・・・ <!-- 一覧データ取得処理ビジネスロジック定義 --> <bean id="ListBLogic" scope="singleton" class="jp.terasoluna.thin.tutorial.web.usermanager.blogic.ListBLogic"> <property name="queryDAO" ref="queryDAO" /> </bean>