【MyBatis-Plus】カラムとフィールドの対応について

この記事を書いたチーム:tenko

はじめに

【エンジニア募集中】フルリモート可◎、売上/従業員数9年連続UP、平均残業8時間、有給取得率90%、年休124日以上 etc.  詳細はこちらから>

本記事では、MyBatis-Plusにおけるテーブルのカラムとエンティティクラスのフィールドの対応について紹介します。

 

関連するMyBatis-Plusの設定

カラムとフィールドの対応に関連するMyBatis-Plusの設定があります。

  • mapUnderscoreToCamelCase(デフォルト値:true
    • データベースのカラム名 A_COLUMN (スネークケース) からJavaのフィールド名 aColumn (キャメルケース) への自動マッピングを有効にする。

     SQL文の生成にもこの設定が適用される。

    • MyBatisのデフォルト値は false
      • capitalMode(デフォルト値:false
        • テーブル名とフィールド名の大文字・小文字を区別する。

      ※本記事では、MyBatis-Plusのデフォルトの設定を前提として説明します。

       

      フィールド→カラムの対応

      1.    @TableField(主キーの場合は @TableId)が設定されている場合

      SQL文を生成する際、カラム名は @TableField(または @TableId)のvalue属性の値となります。フィールド名がカラム名をキャメルケースに変換した値と一致しない場合は、エイリアスが指定されます。

      2.    @TableField(主キーの場合は @TableId)が設定されていない場合

      @TableField(または @TableId)が設定されていない場合は、カラム名はフィールド名をスネークケースに変換した値となります。

       

      カラム→フィールドの対応

      DBから取得した値をエンティティのフィールドへセットする際、テーブルのカラム名またはエイリアスをキャメルケースに変換した値でフィールド名を探します。

      3つ目の例では、カラム名 book_name をキャメルケースに変換すると bookName となるため、エンティティフィールドの book_name null となります。

       

      【エンジニア募集中】フルリモートも◎(リモート率85.7%)、平均残業8時間、年休124日以上、有給取得率90% etc. 詳細はこちらから>

      Smallitのサービス