Explication détaillée de l'exemple de chargement paresseux de MyBatis
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>
(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>
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>
2.4mapper.java
//查询订单关联查询用户,用户信息时延迟加载public List<Orders> findOrdersUserLazyLoading() throws Exception;
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
(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
|
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 |
2.5.3 Code de test
2.6 Réflexions sur le chargement paresseuxComment 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!

Outils d'IA chauds

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

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

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

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

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

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

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

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 :

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

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

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

À 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.
