5
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

mybatisテーブルカラム名とフィールド名との対応付け

Last updated at Posted at 2018-12-30

前提

MyBatisでテーブルカラム名と、コード中で使うフィールド名とを対応付けている仕組み(マッピング)を解説する。

対応付けの方法は、4種類。現場では、そのうちの1つを選択することになる。

  1. 標準の自動マッピング機能を利用する
  2. AS句で1つ1つ対応付ける
  3. キャメルケースの自動マッピング機能をONにする
  4. 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句で書くのが好きかも。

5
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?