Table des matières
2. Utiliser l'association pour implémenter le chargement différé
2.1 Exigences
2.2mapper.xml
2.3 Chargement paresseux de resultMap
2.4mapper.java
2.5 Test
2.5.1 Idée de test
2.5.2 Configuration du chargement différé
Maison Java javaDidacticiel Explication détaillée de l'exemple de chargement paresseux de MyBatis

Explication détaillée de l'exemple de chargement paresseux de MyBatis

Jun 25, 2017 am 10:38 AM
mybatis 学习 搭建 aller en profondeur

1. Qu'est-ce que le chargement paresseux

resultMap peut réaliser une cartographie avancée (en utilisant l'association et la collection pour obtenir un- mappage un à un et un à plusieurs), l'association et la collection ont une fonction de chargement paresseux.

Exigences :

Si vous interrogez la commande et associez des informations utilisateur à la requête. Si nous interrogeons d'abord les informations de commande, nous pouvons répondre aux exigences. Lorsque nous devons interroger les informations utilisateur, nous pouvons ensuite vérifier les informations utilisateur. Interroger des informations utilisateur à la demande est un chargement paresseux.

Chargement paresseux : interrogez d'abord une seule table, puis effectuez des requêtes associées à partir de tables associées si nécessaire, ce qui améliore considérablement les performances de la base de données, car interroger une seule table est plus rapide que d'interroger plusieurs tables de manière associée.

2. Utiliser l'association pour implémenter le chargement différé

2.1 Exigences

Interroger les commandes et associer les informations utilisateur de requête

2.2mapper.xml

Il est nécessaire de définir les instructions correspondant aux deux méthodes mapper.

(1) Interroger uniquement les informations de commande

SELECT * FROM commandes

Dans l'instruction de requête d'ordreUtiliser l'association pour retarder le chargement (exécution) de l'instruction suivante (Informations utilisateur de requête associées).

    <!-- 查询订单关联查询用户  --><select id="findOrdersUserLazyLoading" resultMap="OrdersUserLazyLoadingResultMap">SELECT * FROM orders</select>
Copier après la connexion

(2) Interroger les informations utilisateur par association

Utilisez l'id_utilisateur dans les informations de commande demandées ci-dessus pour interroger les informations utilisateur par association

Utilisez findUserById

    <select id="findUserById" parameterType="int" resultType="user">select * from user where id=#{value}</select>
Copier après la connexion

dans UserMapper.xml. Exécutez d'abord findOrdersUserLazyLoading Lorsque vous devez interroger l'utilisateur, exécutez fingUserById. La configuration d'exécution du chargement paresseux sera exécutée via le. définition de resultMap debout.

2.3 Chargement paresseux de resultMap

Utilisez select en association pour spécifier l'identifiant de l'instruction à exécuter par chargement paresseux.

    <!-- 延迟加载的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>
Copier après la connexion

2.4mapper.java

    //查询订单关联查询用户,用户信息时延迟加载public List<Orders> findOrdersUserLazyLoading() throws Exception;
Copier après la connexion

2.5 Test

2.5.1 Idée de test

(1) Exécutez la méthode de mappage ci-dessus (findOrdersUserLazyLoading) et appelez en interne findOrdersUserLazyLoading dans joanna.yan.mybatis.mapper.OrdersCustomMapper pour interroger uniquement les informations sur les commandes (table unique).

(2) Dans le programme, parcourez la liste interrogée à l'étape précédente. Lorsque nous appelons getUser() dans Orders, le chargement paresseux commence.

(3) Retardez le chargement et appelez la méthode findUserById dans UserMapper.xml pour obtenir des informations sur l'utilisateur.

2.5.2 Configuration du chargement différé

Mybatis n'active pas le chargement différé par défaut et doit être configuré dans SqlMapConfig.xml.

Configuré dans le fichier de configuration principal de mybatis :

lazyLoadingEnabled, agressifLazyLoading

Élément de réglage

设置项

描述

允许值

默认值

lazyLoadingEnabled

全局性设置懒加载。如果设为‘false’,则所有相关联的都会被初始化加载。

true | false

false

aggressiveLazyLoading

当设置为‘true’的时候,懒加载的对象可能被任何懒属性全部加载。否则,每个属性都按需加载。

true | false

true

Description

Valeurs autorisées

Valeur par défaut

lazyLoadingEnabled

     <!-- 全局配置参数,需要时再设置  --> <settings> <!-- 打开延迟加载的开关  --> <setting name="lazyLoadingEnabled" value="true"/> <!-- 将积极加载改为消极加载即按需要加载 --> <setting name="aggressiveLazyLoading" value="false"/> </settings>
Copier après la connexion

Définir le chargement paresseux globalement. S'il est défini sur « false », tous ceux associés seront chargés initialement.

true | false

false

aggressiveLazyLoading

Lorsqu'ils sont définis sur 'true', les objets chargés paresseusement peuvent être entièrement chargés avec n'importe quel attribut paresseux. Sinon, chaque propriété est chargée à la demande.

    @Testpublic void findOrdersUserLazyLoadingTest() throws Exception{
        SqlSession sqlSession=sqlSessionFactory.openSession();
        OrdersCustomMapper ordersCustomMapper=sqlSession.getMapper(OrdersCustomMapper.class);
        List<Orders> list=ordersCustomMapper.findOrdersUserLazyLoading();for (Orders orders : list) {//执行getUser()去查询用户信息,这里实现按需加载User user=orders.getUser();
            System.out.println(user);
        }
        sqlSession.close();
    }
Copier après la connexion

true | false

true

Configuré dans SqlMapConfig.xml :

2.5.3 Code de test

2.6 Réflexions sur le chargement paresseux

Comment implémenter cela sans utiliser la fonction de chargement paresseux en association et en collection fournie par mybatis Chargement paresseux ?

La méthode de mise en œuvre est la suivante :

Définir deux méthodes de mappage : (1) Interroger la liste de commandes (2) Interroger les informations utilisateur en fonction sur l'identifiant de l'utilisateur Idée d'implémentation : interrogez d'abord la première méthode du mappeur et obtenez la liste des informations de commande Dans le programme de test, appelez la deuxième méthode du mappeur si nécessaire pour interroger les informations de l'utilisateur. En bref, en utilisant la méthode de chargement paresseux, interrogez d'abord du SQL simple (de préférence une seule table, mais également des requêtes associées), puis chargez d'autres informations pour les requêtes associées si nécessaire.

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!

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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Explication détaillée de la fonction Définir la balise dans les balises SQL dynamiques MyBatis Explication détaillée de la fonction Définir la balise dans les balises SQL dynamiques MyBatis Feb 26, 2024 pm 07:48 PM

Interprétation des balises SQL dynamiques MyBatis : explication détaillée de l'utilisation des balises Set MyBatis est un excellent cadre de couche de persistance. Il fournit une multitude de balises SQL dynamiques et peut construire de manière flexible des instructions d'opération de base de données. Parmi elles, la balise Set est utilisée pour générer la clause SET dans l'instruction UPDATE, qui est très couramment utilisée dans les opérations de mise à jour. Cet article expliquera en détail l'utilisation de la balise Set dans MyBatis et démontrera ses fonctionnalités à travers des exemples de code spécifiques. Qu'est-ce que Set tag Set tag est utilisé dans MyBati

Analyser le mécanisme de mise en cache de MyBatis : comparer les caractéristiques et l'utilisation du cache de premier niveau et du cache de deuxième niveau Analyser le mécanisme de mise en cache de MyBatis : comparer les caractéristiques et l'utilisation du cache de premier niveau et du cache de deuxième niveau Feb 25, 2024 pm 12:30 PM

Analyse du mécanisme de mise en cache MyBatis : la différence et l'application du cache de premier niveau et du cache de deuxième niveau Dans le framework MyBatis, la mise en cache est une fonctionnalité très importante qui peut améliorer efficacement les performances des opérations de base de données. Parmi eux, le cache de premier niveau et le cache de deuxième niveau sont deux mécanismes de mise en cache couramment utilisés dans MyBatis. Cet article analysera en détail les différences et les applications du cache de premier niveau et du cache de deuxième niveau, et fournira des exemples de code spécifiques pour illustrer. 1. Cache de niveau 1 Le cache de niveau 1 est également appelé cache local. Il est activé par défaut et ne peut pas être désactivé. Le cache de premier niveau est SqlSes

Révéler l'attrait du langage C : découvrir le potentiel des programmeurs Révéler l'attrait du langage C : découvrir le potentiel des programmeurs Feb 24, 2024 pm 11:21 PM

Le charme de l'apprentissage du langage C : libérer le potentiel des programmeurs Avec le développement continu de la technologie, la programmation informatique est devenue un domaine qui a beaucoup attiré l'attention. Parmi les nombreux langages de programmation, le langage C a toujours été apprécié des programmeurs. Sa simplicité, son efficacité et sa large application font de l’apprentissage du langage C la première étape pour de nombreuses personnes souhaitant entrer dans le domaine de la programmation. Cet article discutera du charme de l’apprentissage du langage C et de la manière de libérer le potentiel des programmeurs en apprenant le langage C. Tout d’abord, le charme de l’apprentissage du langage C réside dans sa simplicité. Comparé à d'autres langages de programmation, le langage C

Apprenons ensemble à saisir le numéro racine dans Word Apprenons ensemble à saisir le numéro racine dans Word Mar 19, 2024 pm 08:52 PM

Lors de la modification du contenu du texte dans Word, vous devez parfois saisir des symboles de formule. Certains gars ne savent pas comment saisir le numéro racine dans Word, alors Xiaomian m'a demandé de partager avec mes amis un tutoriel sur la façon de saisir le numéro racine dans Word. J'espère que cela aidera mes amis. Tout d'abord, ouvrez le logiciel Word sur votre ordinateur, puis ouvrez le fichier que vous souhaitez modifier et déplacez le curseur vers l'emplacement où vous devez insérer le signe racine, reportez-vous à l'exemple d'image ci-dessous. 2. Sélectionnez [Insérer], puis sélectionnez [Formule] dans le symbole. Comme indiqué dans le cercle rouge dans l'image ci-dessous : 3. Sélectionnez ensuite [Insérer une nouvelle formule] ci-dessous. Comme indiqué dans le cercle rouge dans l'image ci-dessous : 4. Sélectionnez [Formule radicale], puis sélectionnez le signe racine approprié. Comme le montre le cercle rouge sur l'image ci-dessous :

Apprenez la fonction principale du langage Go à partir de zéro Apprenez la fonction principale du langage Go à partir de zéro Mar 27, 2024 pm 05:03 PM

Titre : Apprenez la fonction principale du langage Go à partir de zéro. En tant que langage de programmation simple et efficace, le langage Go est privilégié par les développeurs. Dans le langage Go, la fonction principale est une fonction d'entrée, et chaque programme Go doit contenir la fonction principale comme point d'entrée du programme. Cet article explique comment apprendre la fonction principale du langage Go à partir de zéro et fournit des exemples de code spécifiques. 1. Tout d’abord, nous devons installer l’environnement de développement du langage Go. Vous pouvez aller sur le site officiel (https://golang.org

Peut-on construire des bâtiments à l'état sauvage dans Mistlock Kingdom ? Peut-on construire des bâtiments à l'état sauvage dans Mistlock Kingdom ? Mar 07, 2024 pm 08:28 PM

Les joueurs peuvent collecter différents matériaux pour construire des bâtiments lorsqu'ils jouent dans le Royaume de Mistlock. De nombreux joueurs veulent savoir si les bâtiments ne peuvent pas être construits à l'état sauvage dans le Royaume de Mistlock. . Des bâtiments peuvent-ils être construits à l’état sauvage dans Mistlock Kingdom Réponse : Non. 1. Les bâtiments ne peuvent pas être construits dans les zones sauvages du Royaume de Mist Lock. 2. Le bâtiment doit être construit dans le cadre de l'autel. 3. Les joueurs peuvent placer eux-mêmes l'Autel du Feu Spirituel, mais une fois qu'ils auront quitté le champ de tir, ils ne pourront plus construire de bâtiments. 4. Nous pouvons également creuser directement un trou dans la montagne pour en faire notre maison, nous n’avons donc pas besoin de consommer de matériaux de construction. 5. Il existe un mécanisme de confort dans les bâtiments construits par les joueurs eux-mêmes, c'est-à-dire que plus l'intérieur est bon, plus le confort est élevé. 6. Un confort élevé apportera des bonus d'attributs aux joueurs, tels que

Surveillance en temps réel de la sortie SQL dans la console MyBatis Surveillance en temps réel de la sortie SQL dans la console MyBatis Feb 25, 2024 pm 03:48 PM

MyBatis est un framework de couche de persistance populaire qui fournit des fonctions pratiques de mappage SQL et d'exploitation de base de données, permettant aux développeurs d'interagir plus efficacement avec la base de données. Dans le processus de développement actuel, nous devons parfois imprimer les instructions SQL exécutées par MyBatis sur la console en temps réel pour mieux déboguer et optimiser les requêtes SQL. Cet article expliquera comment réaliser l'impression en temps réel de SQL sur la console dans MyBatis et fournira des exemples de code spécifiques. Tout d'abord, nous devons ajouter My

Comment construire une matrice de compte ? Quelles sont les fonctions de la construction matricielle ? Comment construire une matrice de compte ? Quelles sont les fonctions de la construction matricielle ? Mar 23, 2024 pm 06:46 PM

À l’ère actuelle de l’information, les plateformes de médias sociaux sont devenues le principal moyen permettant aux individus d’obtenir et de partager des informations. Pour les particuliers et les entreprises, établir un réseau de comptes efficace pour parvenir à une diffusion maximale de l'information et renforcer son influence est devenu un défi urgent qui doit être résolu. 1. Comment construire une matrice de compte ? 1. Clarifier le public cible. Avant de créer une matrice de compte, la clé est de définir clairement le public cible et d'acquérir une compréhension approfondie de ses besoins, de ses intérêts et de ses habitudes de consommation, afin de pouvoir développer une stratégie de contenu plus ciblée. 2. Choisissez la plateforme appropriée en fonction des caractéristiques du groupe cible, choisissez la plateforme de médias sociaux appropriée pour la mise en page. Actuellement, les principales plateformes de médias sociaux incluent Weibo, WeChat, Douyin, Kuaishou, etc. Chaque plateforme a ses propres groupes d'utilisateurs et caractéristiques de communication, et la sélection doit être basée sur la situation réelle.

See all articles