データベースのフィールド名とエンティティクラスの属性名が1対1に対応できない場合の3つの処理方法

クエリ結果のカラム名と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"/>

</設定>

おすすめ

転載: blog.csdn.net/heliuerya/article/details/131299340