目次 > 第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文を発行した際の結果を格納する出力バリューオブジェクトクラスを作成する。

  1. “terasoluna-spring-thin-blank\sources”を右クリックする。
  2. 「新規」→「クラス」を選択する。
  3. 以下の通り入力し、「終了」ボタンを押下する。
    • パッケージ:jp.terasoluna.thin.tutorial.web.usermanager.vo
    • 名前:SelectUserOutput
  4. 生成された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文を設定する。
なお、入力バリューオブジェクトクラスは、ビジネスロジックの入力クラスを流用する。

  1. “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文により使用する要素が変わる。以下に代表的な要素を示す。

要素説明
selectSELECT文を発行する
insertINSERT文を発行する
updateUPDATE文を発行する
deleteDELETE文を発行する

上記で示した要素の属性を以下に示す。

属性説明
idSQLのID。
parameterClassWHERE句で指定する値や、INSERTやUPDATEで挿入・更新する値を持つクラスを指定する。
resultClassSELECT文の結果を格納するクラス。select要素にのみ指定可能。

また、WHERE句やINSERT、UPDATE文でパラメータを指定する場合は、入力バリューオブジェクトの属性名を以下のように“#”で囲むこと。

SELECT ID, NAME, AGE, BIRTH FROM USERLIST WHERE ID = #id#

(3) SQLMap定義ファイルの確認

(2)で編集したSQL設定ファイルは、SQLMap定義ファイルに設定する必要がある。
Server(Web)版が提供するブランクプロジェクトでは設定済みである。

  1. “terasoluna-spring-thin-blank\webapps\WEB-INF\sqlMapConfig.xml”を開き、以下の設定がされていることを確認する。
    <!-- SqlMapConfig定義 -->
    <sqlMapConfig>
        <sqlMap resource="sqlMap.xml"/>
    </sqlMapConfig>
    

SQL設定ファイルは複数作成することができ、新規で作成したファイルはSQLMap定義ファイルに設定を追加する。


次項:2.6.4 ビジネスロジッククラスの作成とDAOの設定

Copyright (C) 2009 NTT DATA CORPORATION