ファイル構成
種類 | クラス名パターン | 役割 | ジェネレータで生成するもの | 注意点 |
---|---|---|---|---|
エンティティ | テーブル名のキャメルケース | テーブル項目の内容を保持するためのbean | テーブル項目名に該当するフィールド、getter、setter | キー項目はKeyクラスに実装 |
キー | エンティティ+Key | テーブルのキー項目の内容を保持するためのbean | キー項目に該当するフィールド、getter、setter | エンティティの親クラス |
Example | エンティティ+Example | エンティティに対する条件などを保持する | 条件式の実装はサブクラスのCriteriaに設定する | |
Mapper | エンティティ+Mapper | SQL文とマッピングするためのインタフェース | update,insert,selectByExample,selectByPrimaryKey |
エンティティの結合
結合エンティティ
全項目列挙→契約エンティティ、契約異動履歴エンティティクラスのフィールドとgetter,setterに変更
結合エンティティMapper.xml
SQLのSELECTをエイリアス.項目名 エイリアス_項目名 で列挙して、すべての項目に別名を作成 resultMapタグ内を以下のように設定 共通IDフィールドは各テーブルに持つ共通の項目となるもの エンティティのresultMapは外部参照ができるので 1対多の場合はcollectionタグを使う collectionにはofTypeにリスト要素の型を指定する
<mapper namespace="jp.example.exex.data.mapper.BindMapper" > <resultMap id="結合ResultMap" type="パッケージ.結合エンティティ" > <id property="共通IDフィールド1" column="共通IDカラム1"/> <association property="t1" columnPrefix="t1_" javaType="パッケージ.エンティティ1" resultMap="マッパー名1.リザルトマップ名"/> <association property="t2" columnPrefix="t2_" javaType="パッケージ.エンティティ2" resultMap="マッパー名2.リザルトマップ名"/> <collection property="t3" ofType="エンティティ3" columnPrefix="t3_" javaType="パッケージ.エンティティ3" resultMap="マッパー名3.リザルトマップ名"/> </resultMap> <sql id="t1Columns"> t1.共通IDカラム 共通IDカラム, t1.IDカラム1 t1_IDカラム1, t1.IDカラム2 t1_IDカラム2, t1.IDフィールド t1_フィールド, ... </sql> <sql id="t2Columns"> t2.IDカラム1 t2_IDカラム1, t2.IDカラム2 t2_IDカラム2, t2.IDカラム3 t2_IDカラム3, t2.IDフィールド t2_フィールド, ... </sql> <sql id="t3Columns"> t3.IDカラム1 t3_IDカラム1, t3.IDカラム2 t3_IDカラム2, t3.IDカラム3 t3_IDカラム3, t3.IDフィールド t3_フィールド, ... </sql> <select id="selectマッパーメソッド名" resultMap="結合ResultMap"> SELECT <include refid="t1Columns"/>, <include refid="t2Columns"/> FROM テーブル1 t1,テーブル2 t2 ... </select> :
エンティティクラスの実装
public class BindEntity { /** 共通のIDカラムの型 */ private DataType id; /** T1テーブルエンティティオブジェクト */ private T1 t1; /** T2テーブルエンティティオブジェクト */ private T2 t2; /** T3エンティティのリスト */ private List<T3> t3List; // それぞれのgetter,setter }
resultMapは結合エンティティのリストへ設定 テーブル内容のマッピングはassociationのプロパティで設定したフィールド名とjavaTypeで指定した型でcolumnPrefixで指定したプレフィックスを持つ項目をエンティティオブジェクトへ挿入する