ホームページ > Java > &#&チュートリアル > mybatis の遅延読み込みのソリューションの紹介

mybatis の遅延読み込みのソリューションの紹介

Y2J
リリース: 2017-05-13 10:36:03
オリジナル
1647 人が閲覧しました

この記事では主にmybatisチュートリアルの遅延読み込みに関する詳しい説明を紹介しています。遅延ロードの意味や使い方実装について詳しく紹介していますので、興味のある方は

遅延ロード

1 遅延ロードを使用する意味

を行うために、データクエリを実行します。データベース クエリのパフォーマンスを向上させるには、単一テーブル クエリの使用が複数テーブル関連のクエリよりも高速であるため、単一テーブル クエリを使用してみてください。

単一のテーブルをクエリすることでニーズを満たすことができる場合は、最初に単一のテーブルをクエリし、関連する情報が必要な場合は、再度クエリを実行します。

mybatis の resultMap は遅延ロード機能を提供し、遅延ロードは resultMap を通じて設定されます。

2 遅延読み込みをサポートするように mybatis を構成する

SqlMapConfig でグローバル パラメーターを構成する
3.1 実装のアイデア


要件:


クエリの順序とユーザー情報、一対一の問い合わせ。

最初は注文情報のみをクエリします
ユーザーが必要な場合は、Orders クラスの getUser() メソッドを呼び出して遅延読み込みを実行し、データベースに SQL を発行します。


3.2 mapper.xml



1

2

3

4

5

6

7

8

9

10

11

12

13

<!-- 全局配置参数 -->

  

<settings>

  

<!-- 延迟加载总开关 -->

  

<setting name="lazyLoadingEnabled" value="true" />

  

<!-- 设置按需加载 -->

  

<setting name="aggressiveLazyLoading" value="false" />

  

</settings>

ログイン後にコピー


3.3 resultMap


1

2

3

4

5

6

7

8

9

<!-- 一对一查询延迟加载

   开始只查询订单,对用户信息进行延迟加载 

   -->

   <select id="findOrderUserListLazyLoading" resultMap="orderCustomLazyLoading">

     SELECT 

     orders.*

    FROM

     orders

   </select>

ログイン後にコピー

3.4 mapper.java

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

<!-- 一对一查询延迟加载 的配置 -->

  <resultMap type="orders" id="orderCustomLazyLoading">

    <!-- 完成了订单信息的映射配置 -->

    <!-- id:订单关联用户查询的唯 一 标识 -->

    <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" />

    <!-- 配置用户信息的延迟加载 select:延迟加载执行的sql所在的statement的id,如果不在同一个namespace需要加namespace 

      sql:根据用户id查询用户信息 column:关联查询的列 property:将关联查询的用户信息设置到Orders的哪个属性 -->

    <association property="user"

      select="com.sihai.mybatis.mapper.UserMapper.findUserById" column="user_id"></association>

  

  

  </resultMap>

ログイン後にコピー

3.5 テストコード


1

2

//一对一查询,延迟加载

  public List<Orders> findOrderUserListLazyLoading() throws Exception;

ログイン後にコピー

4 概要resultType、resultMap、および遅延ロードの使用シナリオ


4.1 遅延ロード:

データベース クエリのパフォーマンスを向上させるために、単一のテーブルのみをクエリすることで遅延ロードを実装する方法は数多くあります。関連情報をロードしてクエリするために使用されます。

mybatis はサービス層の遅延読み込み機能を提供します。


4.2 resultType:

Function: SQL 列名 pojo 属性名の一貫性に従って、クエリ結果を pojo にマップします。

用途: ページに関連するすべてのクエリ情報が表示されている場合、resultType を直接使用して各レコードを pojo にマッピングし、リスト (リスト内の pojo) をトラバースすることが一般的です。フロントエンドページ。


4.3 resultMap:

関連付けとコレクションを使用して、1 対 1 および 1 対多の高度なマッピングを完了します。

4.4 関連付け:


機能: 関連付けクエリ情報を pojo クラスにマップします。

用途: 関連情報を簡単に取得するために、注文や関連ユーザー情報のクエリなど、関連付けを使用して関連注文を POJO にマッピングできます。

4.5 コレクション:


機能: 関連するクエリ情報をリスト コレクションにマップします。
用途: 関連情報を簡単に取得するには、コレクションを使用して関連情報をリスト コレクションにマップします。たとえば、ユーザー権限スコープのモジュールと関数をクエリするには、コレクションを使用してモジュールと関数のリストをマップします。リスト。


【関連する推奨事項】

1.

特別な推奨事項:
「php Programmer Toolbox」V0.1 バージョンのダウンロード


2.

Java の無料ビデオチュートリアル


3.

以上がmybatis の遅延読み込みのソリューションの紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート