目次
2. アソシエーションを使用して遅延読み込みを実装する
2.1 要件
2.2mapper.xml
2.3 resultMapの遅延ロード
ホームページ Java &#&チュートリアル MyBatis の遅延読み込みサンプルの詳細な説明

MyBatis の遅延読み込みサンプルの詳細な説明

Jun 25, 2017 am 10:38 AM
mybatis 勉強 建てる 深く行く

1.遅延ロードとは

resultMapは高度なマッピングを実装できます(アソシエーションとコレクションを使用して1対1および1対多のマッピングを実現します)、アソシエーションとコレクションには遅延ロード機能があります。

要件:

注文をクエリし、クエリのユーザー情報を関連付ける場合。最初に注文情報を照会すると、ユーザー情報を照会する必要がある場合に、ユーザー情報を確認することができます。オンデマンドでのユーザー情報のクエリは遅延読み込みです。

遅延読み込み: 最初に単一テーブルからクエリを実行し、次に必要に応じて関連テーブルから関連クエリを実行します。これにより、単一テーブルのクエリの方が、複数のテーブルを関連してクエリするよりも高速になるため、データベースのパフォーマンスが大幅に向上します。

2. アソシエーションを使用して遅延読み込みを実装する

2.1 要件

アソシエーションによる順序のクエリとユーザー情報のクエリ

2.2mapper.xml

2 つのマッパー メソッドに対応するステートメントを定義する必要があります。

(1) 注文情報のみをクエリ

SELECT * FROM order

注文をクエリするステートメントで関連付けを使用して、次のステートメント(ユーザー情報を関連付けクエリ)の読み込み(実行)を遅らせます。

    <!-- 查询订单关联查询用户  --><select id="findOrdersUserLazyLoading" resultMap="OrdersUserLazyLoadingResultMap">SELECT * FROM orders</select>
ログイン後にコピー

(2) 関連付けによるユーザー情報のクエリ

上記でクエリした注文情報の user_id を使用してユーザー情報をクエリします

UserMapper.xml の findUserById を使用します

    <select id="findUserById" parameterType="int" resultType="user">select * from user where id=#{value}</select>
ログイン後にコピー

必要な場合は、最初に findOrdersUserLazyLoading を実行します。ユーザーにクエリを実行し、fingUserById を実行し、resultMap の定義を通じて遅延読み込みの実行を構成します。

2.3 resultMapの遅延ロード

遅延ロードで実行するステートメントのIDを指定するには、selectを関連付けて使用します。

    <!-- 延迟加载的resultMap  --><resultMap type="joanna.yan.mybatis.entity.Orders" id="OrdersUserLazyLoadingResultMap"><!-- 1.对订单信息进行映射配置 --><id column="id" property="id"/><result column="user_id" property="userId"/><result column="number" property="number"/><result column="createtime" property="createtime"/><result column="note" property="note"/><!-- 2.实现对用户信息进行延迟加载 --><!-- select:指定延迟加载需要执行的statement的id(是根据user_id查询用户信息的statement) 
               要使用UserMapper.xml中findUserById完成根据用户id(user_id)用户信息的查询,
               如果findUserById不在本mapper中需要前边加namespace。
             column:订单信息中关联用户信息查询的列,是user_id
              关联查询的sql理解为:
             SELECT orders.*,
                (SELECT username FROM USER WHERE orders.user_id = user.id)username,
                (SELECT sex FROM USER WHERE orders.user_id = user.id)sex
             FROM orders--><association property="user" javaType="joanna.yan.mybatis.entity.User"select="joanna.yan.mybatis.mapper.UserMapper.findUserById" column="user_id"></association></resultMap>
ログイン後にコピー
E42.4Mapper.java
rreee

2.5 テスト
2.5.1 テストのアイデア

(1) Mapper メソッド (FindOrdersuserlazyloading) を実行し、findOrdersUserLazyLoading 内で Joanna.yan.mybatis.OrderscustomMapper を呼び出し、注文情報のみをクエリします (独身テーブル)。

(2) プログラム内で、前のステップでクエリされた List を走査すると、Orders で getUser() が開始されます。

(3) 読み込みを遅らせ、UserMapper.xmlのfindUserByIdメソッドを呼び出してユーザー情報を取得します。

2.5.2 遅延読み込み設定

mybatis はデフォルトでは遅延読み込みを有効にしないため、SqlMapConfig.xml で設定する必要があります。

mybatisコア設定ファイルで設定:

lazyLoadingEnabled、aggressiveLazyLoading

設定項目lazyLoadingEnabledSqlMapConfig.xmlで構成: (2) ユーザーIDに基づいてユーザー情報をクエリします

説明

許可される値

デフォルト値

遅延読み込みをグローバルに設定します。 「false」に設定すると、関連するすべてのものが最初にロードされます。 「true」に設定すると、遅延ロードされたオブジェクトは遅延属性で完全にロードされる可能性があります。それ以外の場合、各プロパティはオンデマンドでロードされます。

tru​​e | false

tru​​e

    //查询订单关联查询用户,用户信息时延迟加载public List<Orders> findOrdersUserLazyLoading() throws Exception;
ログイン後にコピー

2.5.3 テストコード
     <!-- 全局配置参数,需要时再设置  --> <settings> <!-- 打开延迟加载的开关  --> <setting name="lazyLoadingEnabled" value="true"/> <!-- 将积极加载改为消极加载即按需要加载 --> <setting name="aggressiveLazyLoading" value="false"/> </settings>
ログイン後にコピー

2. 遅延読み込みに関する 6 つの考え
提供されていませんby mybatis アソシエーションとコレクションで遅延読み込みを実装するにはどうすればよいですか?

実装方法は以下のとおりです:
2つのマッパーメソッドを定義します:

(1) 注文リストをクエリします
実装のアイデア: 最初に最初のマッパーメソッドをクエリして取得します注文情報リスト

テスト プログラムでは、必要に応じて 2 番目のマッパー メソッドを呼び出して、ユーザー情報をクエリします。
つまり、遅延読み込み方法を使用して、最初に単純な SQL (できれば単一のテーブルですが、関連するクエリも) をクエリし、次に必要に応じて関連するクエリの他の情報を読み込みます。

以上がMyBatis の遅延読み込みサンプルの詳細な説明の詳細内容です。詳細については、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)

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 25, 2024 pm 12:30 PM

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

C言語の魅力に迫る ~プログラマーの可能性を引き出す~ C言語の魅力に迫る ~プログラマーの可能性を引き出す~ Feb 24, 2024 pm 11:21 PM

C言語学習の魅力:プログラマーの可能性を引き出す テクノロジーの発展に伴い、コンピュータプログラミングは大きな注目を集めている分野です。数あるプログラミング言語の中でもC言語は常にプログラマーに愛されています。そのシンプルさ、効率性、幅広い用途により、C 言語の学習は、多くの人にとってプログラミングの分野に入る最初のステップとなっています。この記事では、C言語を学ぶ魅力と、C言語を学ぶことでプログラマーの可能性を引き出す方法について解説します。 C言語学習の魅力は、まずその簡単さにあります。他のプログラミング言語と比較すると、C言語は

Wordでルート番号を入力する方法を一緒に学びましょう Wordでルート番号を入力する方法を一緒に学びましょう Mar 19, 2024 pm 08:52 PM

Word でテキスト コンテンツを編集するときに、数式記号の入力が必要になる場合があります。 Word でルート番号を入力する方法を知らない人もいるので、Xiaomian は私に、Word でルート番号を入力する方法のチュートリアルを友達と共有するように頼みました。それが私の友達に役立つことを願っています。まず、コンピュータで Word ソフトウェアを開き、編集するファイルを開き、ルート記号を挿入する必要がある場所にカーソルを移動します。下の図の例を参照してください。 2. [挿入]を選択し、記号内の[数式]を選択します。下の図の赤丸で示すように: 3. 次に、下の[新しい数式を挿入]を選択します。以下の図の赤丸で示すように: 4. [根号式]を選択し、適切な根号を選択します。下の図の赤丸で示したように、

Go言語のmain関数をゼロから学ぶ Go言語のmain関数をゼロから学ぶ Mar 27, 2024 pm 05:03 PM

タイトル: Go言語のmain関数をゼロから学ぶ Go言語はシンプルで効率的なプログラミング言語として開発者に好まれています。 Go 言語では、main 関数はエントリ関数であり、すべての Go プログラムにはプログラムのエントリ ポイントとして main 関数が含まれている必要があります。この記事ではGo言語のmain関数をゼロから学ぶ方法と具体的なコード例を紹介します。 1. まず、Go 言語開発環境をインストールする必要があります。公式ウェブサイト (https://golang.org) にアクセスできます。

ミストロック王国の自然の中に建物を建てることはできますか? ミストロック王国の自然の中に建物を建てることはできますか? Mar 07, 2024 pm 08:28 PM

ミストロック王国でプレイするとき、プレイヤーはさまざまな材料を集めて建物を建てることができます。多くのプレイヤーは、野生で建物を建てるべきかどうか知りたいと考えています。ミストロック王国では、建物は野生で建てることはできません。祭壇の範囲内になければなりません。 。ミストロック王国の自然の中に建物を建てることはできますか? 答え: いいえ。 1. ミストロックキングダムの荒野には建物を建てることができません。 2. 建物は祭壇の範囲内に建てなければなりません。 3. プレイヤーは自分で精霊の火の祭壇を設置できますが、範囲を離れると建物を建設できなくなります。 4. 山に直接穴を掘って家にすることもできるので、建築資材を消費する必要がありません。 5. プレイヤー自身が建てた建物には快適性のメカニズムがあり、内装が良いほど快適性が高くなります。 6. 高い快適性により、プレイヤーに属性ボーナスがもたらされます。

MyBatis コンソールでの SQL 出力のリアルタイム監視 MyBatis コンソールでの SQL 出力のリアルタイム監視 Feb 25, 2024 pm 03:48 PM

MyBatis は、便利な SQL マッピングおよびデータベース操作機能を提供する人気の永続層フレームワークで、開発者がデータベースをより効率的に操作できるようにします。実際の開発プロセスでは、SQL クエリのデバッグと最適化を改善するために、MyBatis によって実行された SQL ステートメントをリアルタイムでコンソールに出力する必要がある場合があります。この記事では、MyBatis のコンソール上で SQL のリアルタイム出力を実現する方法と具体的なコード例を紹介します。まず、My を追加する必要があります

これらの 20 の Dune 分析ダッシュボードを理解し、チェーン上の傾向をすばやく把握します これらの 20 の Dune 分析ダッシュボードを理解し、チェーン上の傾向をすばやく把握します Mar 13, 2024 am 09:19 AM

オリジナル著者: Minty、暗号化 KOL オリジナル編集者: Shenchao TechFlow 使い方を知っていれば、Dune はオールインワンのアルファ ツールです。これらの 20 の Dune ダッシュボードを使用して、研究を次のレベルに引き上げましょう。 1. TopHolder 分析 @dcfpascal が開発したこのシンプルなツールは、ホルダーの月間アクティビティ、ユニークホルダー数、ウォレット損益率などの指標に基づいてトークンを分析できます。リンクを参照: https://dune.com/dcfpascal/token-holders2. トークンの概要メトリクス @andrewhong5297 がこのダッシュボードを作成し、ユーザーのアクションを分析してトークンを評価する方法を提供します。

See all articles