Maison > Java > javaDidacticiel > le corps du texte

Présentation de la solution pour le chargement paresseux de mybatis

Y2J
Libérer: 2017-05-13 10:36:03
original
1486 Les gens l'ont consulté

Cet article présente principalement l'explication détaillée du chargement différé dans le tutoriel mybatis. La signification et l'utilisation de la mise en œuvre du chargement paresseux sont présentées en détail. Ceux qui sont intéressés peuvent en apprendre davantage sur le

le chargement paresseux

1 La signification de l'utilisation du chargement paresseux.

Lors de l'exécution d'une requête de données, afin d'améliorer les performances des requêtes de base de données, essayez d'utiliser une requête à table unique, car la requête à table unique est plus rapide que la requête à table unique requête connexe.

Si l'interrogation d'une seule table peut répondre aux besoins, interrogez d'abord la table unique. Lorsque des informations associées sont nécessaires, puis une requête associée lorsque des informations associées sont nécessaires, interrogez à nouveau. C'est ce qu'on appelle le chargement paresseux.

Le resultMap dans mybatis fournit la fonction de chargement paresseux, et le chargement paresseux est configuré via le resultMap.

2 Configurez mybatis pour prendre en charge le chargement différé

Configurez les paramètres globaux dans SqlMapConfig.xml :


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

3 Implémentation du chargement paresseux

3.1 Idées d'implémentation

Exigences :

Demander des informations sur la commande et l'utilisateur, enquête individuelle.

Au début, seules les informations de commande sont interrogées

Lorsqu'un utilisateur est nécessaire, la méthode getUser() de la classe Orders est appelée pour effectuer un chargement paresseux et émettre du SQL à la base de données.

3.2 mapper.xml


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

3.3 resultMap


<!-- 一对一查询延迟加载 的配置 --> 
  <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>
Copier après la connexion

3.4 mapper.java


//一对一查询,延迟加载 
  public List<Orders> findOrderUserListLazyLoading() throws Exception;
Copier après la connexion

3.5 Code de test


// 一对一查询延迟加载 
  @Test 
  public void testFindOrderUserListLazyLoading() throws Exception { 
 
    SqlSession sqlSession = sqlSessionFactory.openSession(); 
    // 创建mapper代理对象 
    OrdersMapperCustom ordersMapperCustom = sqlSession 
        .getMapper(OrdersMapperCustom.class); 
 
    // 调用方法 
    List<Orders> list = ordersMapperCustom.findOrderUserListLazyLoading(); 
     
    //这里执行延迟加载,要发出sql 
    User user = list.get(0).getUser(); 
    System.out.println(user); 
     
  }
Copier après la connexion

4 résumé de resultType, resultMap, scénarios d'utilisation de chargement paresseux

4.1 Chargement paresseux :

Il existe de nombreuses façons d'implémenter le chargement paresseux. L'interrogation d'une seule table peut répondre à la demande. Afin d'améliorer les performances des requêtes de base de données, le chargement paresseux. est utilisé, puis les informations associées sont interrogées.
mybatis fournit une fonction de chargement paresseux pour la couche de service.

4.2 resultType :

Fonction : Mappez les résultats de la requête au pojo en fonction de la cohérence du nom de la colonne SQL du nom de l'attribut pojo.

Occasion : il est courant d'afficher certains enregistrements détaillés lorsque toutes les informations de requête associées sont affichées sur la page, vous pouvez directement utiliser resultType pour mapper chaque enregistrement au pojo et parcourir la liste sur le. page d'accueil (liste (au milieu se trouve pojo).

4.3 resultMap :

Utilisez l'association et la collection pour réaliser une cartographie avancée un-à-un et un-à-plusieurs.

Association 4.4 :

Fonction : Mapper les informations de requête d'association à une classe pojo.

Occasion : afin d'obtenir facilement des informations connexes, vous pouvez utiliser l'association pour mapper les commandes associées à POJO, telles que l'interrogation des commandes et des informations utilisateur associées.

Collection 4.5 :

Fonction : Mapper les informations de requête associées à une collection de listes.

Occasion : afin d'obtenir facilement des informations associées, vous pouvez utiliser la collection pour mapper les informations associées à la collection de listes. Par exemple : pour interroger les modules et les fonctions de portée des autorisations utilisateur, vous pouvez utiliser la collection pour. mapper les listes de modules et de fonctions à la liste.

【Recommandations associées】

1. Recommandation spéciale : "php Programmer Toolbox" version V0.1 Télécharger

2. Tutoriel vidéo gratuit Java

3 Analyse complète des annotations Java

.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal