mybatisのmapper.xmlの中でresultMapラベルの使用について詳しく説明します。


1.はじめに
最近のブロガーはssmフレームを共有する自動車管理システムを作っています。データベースフィールドの設計は下線方式があります。usernameは、mapper.xmlのsql文を書くときに、クエリ文のクエリの値がnullである場合があります。あるいはレスルト・Mapラベルとラクダ峰規則がよく分からない学生はここを見てもいいです。
ついでに整理します。
2.レスリングについて
2.1.reultMapとは何ですか?
mybatisには、selectクエリの結果のセットをマッピングするためのresultMapタグがあり、エンティティクラスのフィールドをデータベーステーブルのフィールドに関連付けるマッピングを行うことが主な役割です。
注意
エンティティクラスのフィールドがデータベーステーブルのフィールドと同じである場合、レスリングタブの関連関係は無視されます。
エンティティクラスのフィールドがデータベーステーブルのフィールドと異なる場合、自動的に変換するためには、reult Mapラベルにエンティティフィールドとデータベースフィールドをそれぞれ関連付けてマッピングするか、またはラクダピークルールをオンにする必要があります。
3.例を挙げて説明する
3.1.データベースとエンティティクラスの名前は同じです。
データベースはこのように書きます。

そして、書くエンティティクラスに対応します。

mapperでの検索方法:

これは最も一般的なsql検索の書き方で、データベースのデータを正常に調べることができます。
もちろんこの時はラクダピークルールを開けなくてもいいです。たとえば、mybatisの配置ファイルの中で宣言が開かれても同じ効果です。

これはなぜですか?
ちなみにいくつかの実体類、データベース、json形式に関する知識があります。
データベースフィールド、インデックスは、大文字と小文字に対して敏感ではありません。つまり、あなたが開けても開けなくても、実際には同じです。
jsonの標準フォーマットは下線を持っています。たとえば:

{“id”:”1234” 
“user_name”:”Lilan”;}
データベースフィールドとbeanの間のフィールド変換は、主流ormツールにマッピング変換サポートがあります。たとえば、上の図のmybatisで開いているラクダピークルールです。
jsonとbeanの間のフィールド変換は、注釈@JsonPropertyを使用することができます。例えば、実体類を書く時:@JsonProperty("user_name")
private String userName;
3.2.データベースと実体類の間が異なる
たとえば、よくある書き方:データベースは下線を使い、それに写像するエンティティ類には、ラクダのピーク原則を採用する。
二つの処理方法:
一つ目は、猫ピークを開くルールです。
データベースは以下の通りです
 
エンティティクラスは以下の通りです

解決:

mybatisの配置ファイルに上記の構成を入れて、フィールドとエンティティと属性のマッピングは基本的に行われません。
sqlクエリと初期化エンティティを行う時にmybatisが自動的に変換されます。sql文を書く時も、下線があるフィールドにエンティティ類と同じ別名を設定する必要はありません。
設定前のsqlクエリ文が追加されていない場合(別名を使用):
select id,user_name as userName,user_sex as userSex,user_age as user Age from user
設定を追加したsql文は(データベースフィールド名を直接使用)です。
select id,user_name,user_sex,user_from user
Sqlは以下の通りです

このようにして、データベース内のデータを直接検索できます。
第二種類:resultMapラベルを使ってマッピングする
たとえば、データベース:

エンティティクラスは以下の通りです

その後、Mapper.xmlにresultMapラベルを書きます。データベースフィールドとエンティティクラスを作ります。
名前マップ(エンティティフィールドとデータベースフィールドをラベルに1つずつマッピングします。

ソースは以下の通りです

 <!-- type  javabean ,id     -->
  <resultMap id="BaseResultMap" type="com.zout.entity.Admin" >
    <id column="aid" property="aid" jdbcType="INTEGER" />
    <!-- property          ,column        -->
    <result column="a_pid" property="aPid" jdbcType="INTEGER" />
    <result column="a_username" property="aUsername" jdbcType="VARCHAR" />
    <result column="a_password" property="aPassword" jdbcType="VARCHAR" />
    <result column="a_real_name" property="aRealName" jdbcType="VARCHAR" />
    <result column="a_phone" property="aPhone" jdbcType="VARCHAR" />
    <result column="a_role" property="aRole" jdbcType="VARCHAR" />
    <result column="a_icon" property="aIcon" jdbcType="VARCHAR" />
    <result column="a_login_time" property="aLoginTime" jdbcType="TIMESTAMP" />
    <result column="a_create_time" property="aCreateTime" jdbcType="TIMESTAMP" />
    <result column="a_update_time" property="aUpdateTime" jdbcType="TIMESTAMP" />
    <result column="a_comment" property="aComment" jdbcType="VARCHAR" />
  </resultMap>
リマインダ:
mybatisの配置ファイルに行って、もうラクダのピークルールを外したかどうか確認してください。レスポンスMapを使うと、猫ピークルールを無効にします。実体類を変えたくないなら、resultMapを採用することを提案します。
図のように:

そしてsqlは以下の通りです

これで対応するデータが得られます。sql文を書くときは、直接データベースフィールド名を使うこともできます。
4.まとめ
最初の点:
1.mybatisプロファイルはこの項目を設定して、検索したフィールドに下線があると下線が引かれます。
その後、javaラクダピークルールを採用します。
たとえば、データベースフィールドのパラメータ_IDは、検索したらparentidになり、本体類Categoryに該当するフィールドをマッチングします。この時は本体に下線が書いてあるといけません。そうでないとマッチしません。検索結果は全部null値になります。
第二点:
1.単表の単純検索を行う場合、戻り値のタイプが基本タイプの場合、一般的にはmapperの戻りタイプはできるだけreultType="xxxx"を使用します。
2.複数表の関連クエリを行う場合、またはxmlに関連するresultMapタグが定義されている場合、resultMap="xxxx";
3.mapper.xmlの中で、reultTypeとreult Mapは同時に使用できません。
第三点:
データベースフィールドと実体類の名前が異なる場合は、resultMapラベルを採用するか、またはラクダピークルールを有効にするか、両者は同時に使用できません。
以上、mybatisのmapper.xmlの中でresultMapタグの使用について詳しく説明しました。これに関連してmybatis resultMapタグの使用内容は以前の文章を検索してください。または下記の関連記事を引き続きご覧ください。これからもよろしくお願いします。