ホームページ Java &#&チュートリアル mybatis の resultType と resultMap の違いと関連性の詳細な分析

mybatis の resultType と resultMap の違いと関連性の詳細な分析

Jul 17, 2017 pm 01:21 PM
mybatis

データベース接続操作に mybatis を使用する場合、SQL ステートメントによって返された結果を処理する方法は通常 2 つあります。1 つは resultType で、もう 1 つは resultMap です。以下に 2 つの知識と理解を説明します。 , 私たちが通常使用する単一テーブル クエリでは、resultType がよく使用されます

Come down and look at a one of code

 1 package org.cxxy.base.cxsc.entity; 2  3 public class TbClass { 4     private Integer id; 5  6     private String classname; 7  8     private String deptname; 9 10     public Integer getId() {11         return id;12     }13 14     public void setId(Integer id) {15         this.id = id;16     }17 18     public String getClassname() {19         return classname;20     }21 22     public void setClassname(String classname) {23         this.classname = classname == null ? null : classname.trim();24     }25 26     public String getDeptname() {27         return deptname;28     }29 30     public void setDeptname(String deptname) {31         this.deptname = deptname == null ? null : deptname.trim();32     }33 }
ログイン後にコピー

I use a small Demo of my

Come down and start post my XML Mapper

<resultMap id="BaseResultMap" type="org.cxxy.base.cxsc.entity.TbClass"><id column="id" jdbcType="INTEGER" property="id" /><result column="classname" jdbcType="VARCHAR" property="classname" /><result column="deptname" jdbcType="VARCHAR" property="deptname" /></resultMap>
ログイン後にコピー

この resultMap は、私の po クラスの属性に対応します

さあ、XML 単一テーブル クエリ ステートメントを投稿してください

<select id="selectByPrimaryKey" parameterType="java.lang.Integer" resultMap="BaseResultMap">
ログイン後にコピー
select 
 id, classname, deptname
from tb_class
where id = #{id,jdbcType=INTEGER}
</select>
ログイン後にコピー
 <br>
ログイン後にコピー

parameterType は入力パラメータを表します (例: select * from tb_class where id = "xxxx")、resultMapマップされた結果セットを表します。これはもちろん結果セットです。もちろん、一般的な開発では、単一のテーブル クエリ (1 対 1) を表します。このようなマッピングを行う場合、通常は次のような書き方をします

<select id="selectByPrimaryKey" parameterType="java.lang.Integer" resultMap="类的全限定名">select 
 id, classname, deptname
from tb_class
where id = #{id,jdbcType=INTEGER}</select>
ログイン後にコピー

つまり、得られる結果は同じです。一般的に、私たちの理解では後者を選択しようとします

が、それがベースである場合は、顧客のニーズに応じて変更します。たとえば、クラスの拡張クラスを作成する

org.cxxy.base.cxsc.entity.TbClassDatail
ログイン後にコピー

拡張クラスに外部クラス(他のテーブルの属性(このクラスと共通の属性を持たない))が導入された場合、 resultMap を使用することもできますが、完全ではありません

resultMap

定义po类
在Orders类中加入User属性。
在Orders类中加入List<Orderdetail> orderdetails属性
ログイン後にコピー

Order query list

<select id="findOrdersDetailList" resultMap="userorderdetailmap">SELECT
    orders.*,
    user.username,
    user.address,
    orderdetail.id orderdetail_id,
    orderdetail.items_id,
    orderdetail.items_num
    FROM orders,user,orderdetail
    WHERE orders.user_id = user.id
    AND orders.id = orderdetail.orders_id</select> 
ログイン後にコピー

<!-- 订单信息resultmap --><resultMap type="cn.itcast.mybatis.po.Orders" id="userorderdetailmap"><id property="id"column="id"/><result property="user_id" column="user_id"/><result property="number" column="number"/><association property="user" javaType="cn.itcast.mybatis.po.User"><id property="id" column="user_id"/><result property="username" column="username"/><result property="address" column="address"/></association><collection property="orderdetails" ofType="cn.itcast.mybatis.po.Orderdetail"><id property="id" column="orderdetail_id"/><result property="items_id" column="items_id"/><result property="items_num" column="items_num"/></collection></resultMap>
ログイン後にコピー

上記のコード、私は注文を投稿しました研修機関のクエリコード、

上記のエンティティクラス間の関係は、 Order----->User one-to-one (one user, one order) Order---------->OrderDetail 1 対多 (1 つの注文に複数の注文がある) 詳細)

このような 1 対多および多対多のクエリのマッピングでは、resultMap を使用しようとします
注:collection 标签是一对多的映射,常用于一对多中扩展类下的List<po对象>的属性
   association标签适用扩展类包含的一对一的po类对象属性
ログイン後にコピー

MyBatis における resultType と resultMap の違い

MyBatis では、選択マッピングのクエリを実行するときに、戻り値の型に resultType を使用できます。また、resultMap は戻り値の型 (モデル オブジェクトのエンティティに対応する) を直接表し、resultMap は外部への参照です。 ResultMap (db と model の間の暗黙的なキーは事前に定義されています -- > value 関係)、resultType と resultMap は同時に存在できません。

MyBatis がクエリ マッピングを実行するとき、クエリされた各属性は実際に対応する Map に配置されます。ここで、キーは属性名、値は対応する値です。

①指定された戻り値の型属性が resultType の場合、MyBatis は Map 内のキーと値のペアを取り出し、resultType で指定されたオブジェクトに対応する属性に割り当てます。したがって、実際には、MyBatis のすべてのクエリ マップの戻り値の型は ResultMap ですが、提供された戻り値の型属性が resultType の場合、MyBatis は対応する値を resultType で指定されたオブジェクトの属性に自動的に割り当てます。

②提供された戻り値の型が resultMap の場合、Map はドメイン モデルをうまく表現できないため、さらに自分で対応するオブジェクトに変換する必要があります。これは、複雑なクエリで非常に便利です。

要約すると


resultType:

Function:

SQL 列名 pojo 属性名の一貫性に従って、クエリ結果を pojo にマッピングします (単一テーブル クエリにのみ適用されます)。

機会:

ユーザーの商品購入の詳細など、いくつかの詳細なレコードを表示するのが一般的です。関連するすべてのクエリ情報がページに表示されている場合、resultType を直接使用して各レコードをポジョにマッピングできます。フロントエンド ページのリストを調べます (リストは pojo です)。

以上がmybatis の resultType と resultMap の違いと関連性の詳細な分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

iBatis と MyBatis: どちらがあなたにとって優れていますか? iBatis と MyBatis: どちらがあなたにとって優れていますか? Feb 19, 2024 pm 04:38 PM

iBatis と MyBatis: どちらを選択するべきですか?はじめに: Java 言語の急速な発展に伴い、多くの永続化フレームワークが登場しました。 iBatis と MyBatis は 2 つの人気のある永続化フレームワークであり、どちらもシンプルで効率的なデータ アクセス ソリューションを提供します。この記事では、iBatis と MyBatis の機能と利点を紹介し、適切なフレームワークを選択するのに役立つ具体的なコード例をいくつか示します。 iBatis の紹介: iBatis はオープンソースの永続化フレームワークです。

MyBatis動的SQLタグのSetタグ機能の詳細説明 MyBatis動的SQLタグのSetタグ機能の詳細説明 Feb 26, 2024 pm 07:48 PM

MyBatis 動的 SQL タグの解釈: Set タグの使用法の詳細な説明 MyBatis は、豊富な動的 SQL タグを提供し、データベース操作ステートメントを柔軟に構築できる優れた永続層フレームワークです。このうち、Set タグは、UPDATE ステートメントで SET 句を生成するために使用され、更新操作でよく使用されます。この記事では、MyBatis での Set タグの使用法を詳細に説明し、特定のコード例を通じてその機能を示します。 SetタグとはMyBatiで使用するSetタグです。

MyBatis でバッチ削除操作を実装するさまざまな方法 MyBatis でバッチ削除操作を実装するさまざまな方法 Feb 19, 2024 pm 07:31 PM

MyBatis でバッチ削除ステートメントを実装するいくつかの方法には、特定のコード例が必要です。近年、データ量の増加により、バッチ操作がデータベース操作の重要な部分になっています。実際の開発では、データベース内のレコードを一括で削除する必要が生じることがよくあります。この記事では、MyBatis でバッチ削除ステートメントを実装するいくつかの方法に焦点を当て、対応するコード例を示します。 foreach タグを使用してバッチ削除を実装します。MyBatis は、セットを簡単に横断できる foreach タグを提供します。

JPAとMyBatisの機能・性能の比較分析 JPAとMyBatisの機能・性能の比較分析 Feb 19, 2024 pm 05:43 PM

JPA と MyBatis: 機能とパフォーマンスの比較分析 はじめに: Java 開発では、永続化フレームワークが非常に重要な役割を果たします。一般的な永続化フレームワークには、JPA (JavaPersistenceAPI) や MyBatis などがあります。この記事では、2 つのフレームワークの機能とパフォーマンスを比較分析し、具体的なコード例を示します。 1. 機能の比較: JPA: JPA は JavaEE の一部であり、オブジェクト指向のデータ永続化ソリューションを提供します。アノテーションまたはXが渡されます

MyBatis バッチ削除ステートメントの使用方法の詳細な説明 MyBatis バッチ削除ステートメントの使用方法の詳細な説明 Feb 20, 2024 am 08:31 AM

MyBatis バッチ削除ステートメントの使用方法の詳細な説明には、特定のコード例が必要です はじめに: MyBatis は、豊富な SQL 操作機能を提供する優れた永続層フレームワークです。実際のプロジェクト開発では、データを一括で削除する必要がある場面に遭遇することがよくあります。この記事では、MyBatis のバッチ削除ステートメントの使用方法を詳しく紹介し、具体的なコード例を添付します。使用シナリオ: データベース内の大量のデータを削除する場合、削除ステートメントを 1 つずつ実行するのは非効率です。このとき、MyBatisの一括削除機能が利用できます。

MyBatisのキャッシュ機構を解析:一次キャッシュと二次キャッシュの特徴と使い方を比較 MyBatisのキャッシュ機構を解析:一次キャッシュと二次キャッシュの特徴と使い方を比較 Feb 25, 2024 pm 12:30 PM

MyBatis のキャッシュ メカニズムの分析: 1 次キャッシュと 2 次キャッシュの違いと応用 MyBatis フレームワークでは、キャッシュはデータベース操作のパフォーマンスを効果的に向上させることができる非常に重要な機能です。そのうち、一次キャッシュと二次キャッシュは、MyBatis でよく使用される 2 つのキャッシュ メカニズムです。この記事では、一次キャッシュと二次キャッシュの違いと用途を詳細に分析し、具体的なコード例を示して説明します。 1. レベル 1 キャッシュ レベル 1 キャッシュはローカル キャッシュとも呼ばれ、デフォルトで有効になっており、オフにすることはできません。 1次キャッシュはSqlSesです

MyBatis 1次キャッシュの詳細解説:データアクセス効率を高めるには? MyBatis 1次キャッシュの詳細解説:データアクセス効率を高めるには? Feb 23, 2024 pm 08:13 PM

MyBatis 1次キャッシュの詳細解説:データアクセス効率を高めるには?開発プロセス中、効率的なデータ アクセスは常にプログラマーの焦点の 1 つでした。 MyBatis のような永続層フレームワークの場合、キャッシュはデータ アクセス効率を向上させるための重要な方法の 1 つです。 MyBatis は、一次キャッシュと二次キャッシュという 2 つのキャッシュ メカニズムを提供しており、一次キャッシュはデフォルトで有効になっています。この記事では、MyBatis の 1 次キャッシュのメカニズムを詳細に紹介し、読者の理解を深めるために具体的なコード例を示します。

MyBatis Generator 設定パラメータの解釈とベスト プラクティス MyBatis Generator 設定パラメータの解釈とベスト プラクティス Feb 23, 2024 am 09:51 AM

MyBatisGenerator は、MyBatis が公式に提供するコード生成ツールで、開発者がデータベース テーブル構造に準拠した JavaBeans、Mapper インターフェイス、および XML マッピング ファイルを迅速に生成するのに役立ちます。コード生成に MyBatisGenerator を使用するプロセスでは、構成パラメーターの設定が重要です。この記事では、構成パラメータの観点から開始し、MyBatisGenerator の機能を詳しく説明します。

See all articles