前提
MyBatisでテーブルカラム名と、コード中で使うフィールド名とを対応付けている仕組み(マッピング)を解説する。
対応付けの方法は、4種類。現場では、そのうちの1つを選択することになる。
- 標準の自動マッピング機能を利用する
- AS句で1つ1つ対応付ける
- キャメルケースの自動マッピング機能をONにする
- resultMapタグで管理する
1. 標準の自動マッピング機能を利用する
MyBatisの標準設定では、「小文字大文字の違いを無視して、対応付ける」仕様になっている。
以下のような例は、自動で対応付けされ、動作する。
例:(テーブルカラム名)A_COLUMN → (フィールド名)a_column や a_Column
2. as句で1つ1つ対応付ける
SQL文を記述する際、AS句で対応を記載する。
SQL文
SELECT
A_COLUMN AS "aColumn",
B_COLUMN AS "bColumn",
FROM
MY_TABLE
WHERE
A_COLUMN = "test"
フィールド名
Public Class myTableDto {
String aColumn;
String bColumn;
}
3.キャメルケースの自動マッピング機能をONにする
コンフィグファイル(例:mybatis-config.xml)の中で、
mybatis-config.xml
<settings>
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
を指定すると、アンダーバー付のカラム名を、自動でキャメルケース(2番目の単語の最初を大文字にする)に対応させてくれる。
例:(テーブルカラム名)A_COLUMN → (フィールド名)aColumn
4. resultMapタグで管理する
コンフィグファイルから呼び出す Mapperファイル の中で、resultMapタグを使い、対応付けを記述する。
testMapper.xml
<mapper namespace="org.apache.ibatis.example.Mapper">
<resultMap type="org.apache.ibatis.example.dto.myTableDto" id="testmap">
<result column="A_COLUMN" property="aColumn"/>
<result column="B_COLUMN" property="bColumn"/>
</resultMap>
<select id="getAll" resultMap="testmap">
SELECT * FROM MY_TABLE
</select>
</mapper>
雑感
個人的には、SQL文を見たときに書き漏らしがないかすぐ分かる、AS句で書くのが好きかも。