目次 > 第2章 Server(Web)版チュートリアル > 2.6 登録処理 > 2.6.3 SQLの設定
2.6.3 SQLの設定
Server(Web)版では、O/RマッピングツールのiBATISを利用したデータベースアクセス機能を提供している。以下に特徴を示す。
- SQL設定ファイル(sqlMap.xml)にSQL文を記述する。
- 挿入(INSERT)や更新(UPDATE)、条件句(WHERE)などのパラメータは、入力バリューオブジェクトに設定する。
- 参照(SELECT)の結果は、出力バリューオブジェクトに設定される。
- SQL設定ファイルはSQLMap定義ファイル(sqlMapConfig.xml)に設定する。
本項では、「USERLIST」テーブルから指定したIDのデータを取得するSELECT文と、データを挿入するINSERT文を記述する方法について説明する。
手順
本項では以下の作業が必要になる。
(1) 出力バリューオブジェクトの作成
SELECT文を発行した際の結果を格納する出力バリューオブジェクトクラスを作成する。
- “terasoluna-spring-thin-blank\sources”を右クリックする。
- 「新規」→「クラス」を選択する。
- 以下の通り入力し、「終了」ボタンを押下する。
- パッケージ:jp.terasoluna.thin.tutorial.web.usermanager.vo
- 名前:SelectUserOutput
- 生成されたSelectUserOutputクラスを以下のように編集する。
package jp.terasoluna.thin.tutorial.web.usermanager.vo; import java.io.Serializable; /** * 情報保持Bean。 * * データベースからの取得時、画面からの入力時に使用される。 * */ public class SelectUserOutput implements Serializable { /** * シリアルバージョンID。 */ private static final long serialVersionUID = 161610379384156463L; /** * ID。 */ private Long id = null; /** * 名前。 */ private String name = null; /** * 年齢。 */ private String age = null; /** * 生年月日。 */ private String birth = null; /** * IDを返却する。 * * @return 保持するID */ public Long getId() { return id; } /** * IDを設定する。 * * @param id ID */ public void setId(Long id) { this.id = id; } /** * 名前を返却する。 * * @return 保持する名前 */ public String getName() { return name; } /** * 名前を設定する。 * * @param name 名前 */ public void setName(String name) { this.name = name; } /** * 年齢を返却する。 * * @return 保持する年齢 */ public String getAge() { return age; } /** * 年齢を設定する。 * * @param age 年齢 */ public void setAge(String age) { this.age = age; } /** * 生年月日を返却する。 * * @return 保持する生年月日 */ public String getBirth() { return birth; } /** * 生年月日を設定する。 * * @param birth 生年月日 */ public void setBirth(String birth) { this.birth = birth; } }
(2) SQL設定ファイルの編集
「USERLIST」テーブルから指定したIDのデータを取得するSELECT文と、データを挿入するINSERT文を設定する。
なお、入力バリューオブジェクトクラスは、ビジネスロジックの入力クラスを流用する。
- “terasoluna-spring-thin-blank\sources\sqlMap.xml”を開き、以下の箇所にSQLの設定を追加する。
<!-- SqlMap定義 --> <sqlMap namespace="user"> <!-- 指定したIDのを取得する --> <select id="getUser" parameterClass="jp.terasoluna.thin.tutorial.web.usermanager.dto.InsertInput" resultClass="jp.terasoluna.thin.tutorial.web.usermanager.vo.SelectUserOutput"> SELECT ID, NAME, AGE, BIRTH FROM USERLIST WHERE ID = #id# </select> <!-- ユーザを挿入する --> <insert id="insertUser" parameterClass="jp.terasoluna.thin.tutorial.web.usermanager.dto.InsertInput"> INSERT INTO USERLIST ( ID, NAME, AGE, BIRTH )VALUES( #id#, #name#, #age#, #birth#) </insert> </sqlMap>
発行するSQL文により使用する要素が変わる。以下に代表的な要素を示す。
要素 | 説明 |
select | SELECT文を発行する |
insert | INSERT文を発行する |
update | UPDATE文を発行する |
delete | DELETE文を発行する |
上記で示した要素の属性を以下に示す。
属性 | 説明 |
id | SQLのID。 |
parameterClass | WHERE句で指定する値や、INSERTやUPDATEで挿入・更新する値を持つクラスを指定する。 |
resultClass | SELECT文の結果を格納するクラス。select要素にのみ指定可能。 |
また、WHERE句やINSERT、UPDATE文でパラメータを指定する場合は、入力バリューオブジェクトの属性名を以下のように“#”で囲むこと。
SELECT ID, NAME, AGE, BIRTH FROM USERLIST WHERE ID = #id#
(3) SQLMap定義ファイルの確認
(2)で編集したSQL設定ファイルは、SQLMap定義ファイルに設定する必要がある。
Server(Web)版が提供するブランクプロジェクトでは設定済みである。
- “terasoluna-spring-thin-blank\webapps\WEB-INF\sqlMapConfig.xml”を開き、以下の設定がされていることを確認する。
<!-- SqlMapConfig定義 --> <sqlMapConfig> <sqlMap resource="sqlMap.xml"/> </sqlMapConfig>
SQL設定ファイルは複数作成することができ、新規で作成したファイルはSQLMap定義ファイルに設定を追加する。