クエリ結果のカラム名とJavaオブジェクトの属性名が一致しない場合は、以下のメソッドを使用して処理する必要があります。
1 つ目の方法: クエリでキーワード「as」を使用して列のエイリアスを作成します。
2 番目の方法: resultMap 結果マッピングを使用する
3 番目の方法: ハンプ名の自動マッピングをオンにする (構成設定)
エンティティクラス Car:
パッケージcom.bjpowernode.domain;
パブリッククラスの車{
プライベート整数 ID。
プライベート文字列 carNum;
プライベートストリングブランド。
プライベートダブルガイド料金;
プライベート文字列のProduceTime;
プライベート文字列 carType;
//構築方法を省略しています
//セッターとゲッター略
//toString を少しだけ
データベース内の t_car テーブル:
エンティティ クラスの属性名はデータベース テーブルのフィールド名と完全に同じではないため、処理する必要があることがわかります。処理方法は次の 3 つです。
最初の方法: キーワード「as」を使用してクエリ ステートメント内の列の別名を指定します。別名はエンティティ クラスの属性名である必要があります。
<select id="selectById" resultType="com.powernode.mybatis.pojo.Car">
選択する
ID、
car_numを carNumとして、
ブランド、
guide_priceガイド価格として、
プロデュースタイムをプロデュースタイムとして、
car_typeとしてcarType
から
t_car
どこ
id = #{id}
</選択>
2 番目の方法: 次のように、resultMap 結果マッピングを使用します。
<!--
結果マップ:
id: は、この結果マッピングの一意の識別子です。
type: 結果セットがマップされるクラス (つまり、対応するエンティティ クラス)。エイリアスを使用できます。
-->
<resultMap id="carResultMap" type="car">
<!-- id は、 mybatis のパフォーマンスを向上させるためのオブジェクトの一意の識別子です。書き込むことをお勧めします。-->
<id property="id" column="id"/>
<result property="carNum" column="car_num"/>
<!-- 属性名がデータベースの列名と一致する場合は省略できます。しかし、それを書き留めてください。-->
<!--javaType は属性タイプを指定するために使用されます。jdbcType は列の型を指定するために使用されます。一般的には省略可能です。-->
<result property="brand" column="brand" javaType="string" jdbcType="VARCHAR"/>
<result property="guidePrice" column="guide_price"/>
<result property="プロデュースタイム" カラム="プロデュースタイム"/>
<result property="carType" column="car_type"/>
</結果マップ>
<!-- resultMap 属性の値は、resultMap タグの id 属性の値と一致している必要があります。-->
<select id="selectAllByResultMap" resultMap="carResultMap">
t_car から * を選択
</選択>
3 番目の方法: ハンプ名の自動マッピングをオンにする (構成設定)
この方法を使用するための前提条件は次のとおりです。
属性名は Java 命名規則に従い、データベース テーブルの列名は SQL 命名規則に従います。
Java の命名規則:
ハンプの命名規則に従って、最初の文字は大文字になり、後続の各単語の最初の文字も大文字になります。
SQL の命名規則:
すべて小文字の単語はアンダースコアで区切られます。
たとえば、次のような対応です。
エンティティクラスの属性名 データベーステーブルの列名
carNum car_num
carType car_type
プロデュースタイム
この機能を有効にするには、mybatis-config.xml ファイルで次のように設定する必要があります。
<!-- プロパティタグの後 -->
<設定>
<setting name="mapUnderscoreToCamelCase" value="true"/>
</設定>