ホームページ  >  記事  >  Java  >  mybatis の遅延読み込みのソリューションの紹介

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

Y2J
Y2Jオリジナル
2017-05-13 10:36:031481ブラウズ

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

遅延ロード

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

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

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

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

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

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


要件:


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

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


3.2 mapper.xml



<!-- 全局配置参数 --> 
 
<settings> 
 
<!-- 延迟加载总开关 --> 
 
<setting name="lazyLoadingEnabled" value="true" /> 
 
<!-- 设置按需加载 --> 
 
<setting name="aggressiveLazyLoading" value="false" /> 
 
</settings>


3.3 resultMap


<!-- 一对一查询延迟加载 
   开始只查询订单,对用户信息进行延迟加载  
   --> 
   <select id="findOrderUserListLazyLoading" resultMap="orderCustomLazyLoading"> 
     SELECT  
     orders.* 
    FROM 
     orders 
   </select>

3.4 mapper.java

<!-- 一对一查询延迟加载 的配置 --> 
  <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 テストコード


//一对一查询,延迟加载 
  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 までご連絡ください。