Lors de l'apprentissage de l'hibernate, l'éditeur a été exposé à divers mappages. Comment fonctionne la cartographie dans Mybatis? Dans ce billet de blog aujourd'hui, l'éditeur présentera principalement brièvement la cartographie avancée de Mybatis, notamment un à un, un à plusieurs et plusieurs à plusieurs. J'espère que de plus en plus d'amis dans le besoin seront utiles. L'éditeur présente principalement le modèle de données de produit de commande, la requête individuelle, la requête un-à-plusieurs et la requête de plusieurs à plusieurs.
1. Commandez le modèle de données du produit
1. Le script d'exécution de la base de données est le suivant:
<span style = "Font-Family: Comic Sans MS; Font-Size: 18px;"> Créer des éléments de table (id int not null auto_increment, itemsName varchar (32) non null commentaire `` Nom du produit '', Price Float (10,1) Not Null Commentaire `` Prix du produit '', Texte détaillé du texte `` DESCRIPTION DES PRODUCT Key (id)) par défaut charset = utf8; / * Structure de table pour la table `OrderDetail` * / Créer la table OrderDeTail (id int not null auto_increment, orders_id int nul null comment` `id de commande '', items_id int null commentaire` `id de produit '', iteles_num int neful commentaire` `Product Achat Quantity ', principale (id), clé` fk_orderDetail_1` (`` Orders_id`), clés `Fk_orderdetail_2` (` items_id`), contrainte `fk_orderdetail_1` key étrangère (` orders_id`) références `Orders` (` id`) Sur la suppression de la mise en œuvre sur la mise à jour, la contrainte `FK_Orderdetail_2` Clé étranger (` items_id) CharSet = utf8; / * Structure de table pour la table `Orders` * / Créer des ordres de table (id int not null auto_increment, user_id int not null comment` `id de commande '', numéro varchar (30) non null commentaire` `numéro de commande '', commentaire de la note de création non nul (id`), clés` `user_id '), clés` fk_1'. Contrainte `fk_orders_id` clé étrangère (` user_id`) références `t_user` (` id`) sur supprimer aucune action sur la mise à jour sans action) charset par défaut = utf8; / * Structure de table pour la table `t_user` * / Créer la table t_user (id int not null auto_increment, nom d'utilisateur varchar (32) non nulle commentaire` `nom d'utilisateur '', date d'anniversaire commentaire par défaut« anniversaire », adresse nul (1) commentaire null (` `id`) par défaut (256). </span>
Tester le code de données
<span style = "Font-Family: Comic Sans MS; Font-Size: 18PX;"> / * Données pour la table `Items` * / Insérer dans les éléments (itemsName, Price, Detail, Pic, CreateTime) Valeurs ('Desktop', 3000.0, 'Cet ordinateur est de grande qualité!', NULL, '2015-07-07 13:28:53'),) ('Notebook', 6000.0, 'Notebook', Good Performance, Good Quality! ', NULL,' 2015-07-08 13:22:57 '), (' Backpack ', 200.0,' Backpack de classe de classe, High Capacile and Good Quality! ', Null' ', 2015-07-010 13:25:02'); / * Données pour le tableau `OrderDetail` * / Insérer dans` OrderDetail` (`Orders_id`,` items_id`, `items_num`) (1,1,1), (1,2,3), (2,3,4), (3,2,3); / * Données pour le tableau `Orders` * / INSERT dans` Orders` (`User_ID`,` numéro ', `CreateTime`,` Note`) (1,' 1000010 ',' 2015-06-04 13: 22: 35 ', null), (1,' 1000011 ',' 2015-07-08 13: 22: 41 ', null), null),, 2015-07-08 13: 22: 41', null),, null),, 2015-07-08 13: 22: 41 ', null),, null),, 2015-07-08 13: 22: 41', null),, null),, 2015-07-08 13: 22: 41 ', null),, Null),, 2015-07-08 13: 22: 41', NULL (2, '1000012', '2015-07-17 14: 13: 23', null), (3, '1000012', '2015-07-16 18: 13: 23', null), (4, '1000012', '2015-07-15 19: 13: 23', null), (5, '1000012', '2015-07-14-14-14: 13: 23', '100012 ',' 2015-07-14-14-14: 13: 23 ', null),,, 2015-07-14-14 (6, «1000012», «2015-07-13 16: 13: 23», null); / * Données pour la table `User` * / INSERT dans` T_USER` (`Username`,` anniversaire ', `` Sex`, `Address') ('Wang Wu', null, '2', null), ('zhang san' ',` `2014-07-10' Xiaoming ', null,' 1 ',' Zhengzhou, Henan '), (' Chen XiaoMing ', null,' 1 ',' Zhengzhou, Henan '), (' Zhang Sanfeng ', null,' 1 ',' Zhengzhou, Henan '), (' Zhang Sanfeng ', Null,' 1 '', 'Zhengzhou ('Chen Xiaoming', null, '1', 'Zhengzhou, Henan'), ('wang wu', null, null, null), ('xiao a', '2015-06-27', '2', 'Beijing'), ('xiao b' ',' 2015-06-27 ',' 2 '', '') '),', '2015-06-27', '2' ',') '). C ',' 2015-06-27 ',' 1 ',' Beijing '), (' xiao d ',' 2015-06-27 ',' 2 ',' beijing '); </span>2. Idées d'analyse du modèle de données
(1). Contenu de données enregistré dans chaque tableau: Familiarisez-vous avec le contenu enregistré dans chaque tableau dans des modules, ce qui équivaut au processus d'apprentissage des exigences du système (fonctions);
(2). Paramètres de champ importants pour chaque tableau: champs non vides, champs de clés étrangers;
(3). La relation entre les tables et les tableaux au niveau de la base de données: relation de clé étrangère;
(4). Relation commerciale entre les tables: lors de l'analyse de la relation commerciale entre les tables, elle doit être basée sur une certaine signification commerciale à analyser.
3. Analyse des idées de base de données pour les modèles de produits de commande, comme le montre la figure ci-dessous:
2. Requête individuelle
2.1. Exigences: Informations sur les commandes de requête et les informations d'association des utilisateurs
2.2. Implémentation de ResultType
2.2.1 Instruction SQL
Déterminez le tableau principal de la requête: le tableau de commande, déterminez la table d'association de la requête, la table utilisateur, le code est le suivant:
<span style = "Font-Family: Comic Sans MS; Font-Size: 18px;"> SELECT T1. *, T2.Username, T2.SEX, T2.Address From Orders T1, T_USER T2 WHERE T1.USER_ID = T2.ID </ SPAND>
2.2.2 Créer une entité entité
L'entité utilisateur user.java, le code est le suivant:
<span style = "Font-Family: Comic Sans MS; Font-Size: 18px;"> package com.mybatis.entity; Importer java.util.date; Importer java.util.list; / ** * @classname: utilisateur * @description: TODO (entité utilisateur) * @author ahvari * / classe publique User {ID entier privé; // Nom de la chaîne privée Nom d'utilisateur; // Sexe à cordes privées de genre; // Adresse d'adresse de chaîne privée; // anniversaire anniversaire anniversaire; // Liste privée d'OrdeRsList créée par l'utilisateur <DERDS> ORDERSLIST; // Getter et Setter ......} </span>Commandes d'ordres entités.java
<span style = "Font-Family: Comic Sans MS; Font-Size: 18px;"> package com.mybatis.entity; Importer java.util.date; Importer java.util.list; / ** * @className: Orders * @Description: TODO (entité d'ordre) * @Author Ahvari * / Public Class Orders {/ ** ID de commande de clé primaire * / Id entier privé; / ** Commandez ID utilisateur * / private Integer UserId; / ** Numéro de commande * / numéro de chaîne privée; / ** COMMANDE HEURE * / Private Date CreateTime; / ** Remarque * / Private String Note; // Informations utilisateur utilisateur privé utilisateur; // Détails de la commande Private List <CordreDetail> OrderDetails; // Getter et Setter ......} </span>Entité du produit: articles.java
<span style = "Font-Family: Comic Sans MS; Font-Size: 18px;"> package com.mybatis.entity; Importer java.util.date; / ** * @classname: éléments * @description: TODO (Classe d'entité du produit) * @Author ding guoHua * / public class items {/ ** Product Table ID de clé primaire * / ID entier privé; / ** Nom du produit * / Private String itemsName; / ** Prix du produit * / Prix de flotteur privé; / ** DESCRIPTION DU PRODUIT * / Détail de chaîne privée; / ** image du produit * / image de chaîne privée; / ** Date de production * / Date privée CreateTime; // Getter et Setter ......} </span>Commandez en détail entité OrderDetail.java
<span style = "Font-Family: Comic Sans MS; Font-Size: 18px;"> package com.mybatis.entity; / ** * @className: OrderDetail * @Description: TODO (ENTITY DE DÉTAILS DE COMMANDE) * @Author Ding GuoHua * / classe publique OrderDetail {/ ** Main, Détails ID de liste * / ID entier privé; / ** ID * / Private Integer OrderDID; / ** ID de produit * / private Integer itemSID; / ** Quantité d'achat de produit * / entiers privés ItemsNum; // Informations sur le produit correspondant aux détails des articles privés; // Getter et Setter ......} </span>Créez une classe de wrapper pour cartographier toutes les informations de requête à cette classe OrderSustom.java
<Span Style = "Font-Family: Comic Sans MS; Font-Size: 18px;"> / ** * @className: OrdersCustom * @Description: TODO (la classe étendue des commandes, qui mappe les ordres et les résultats de la requête utilisateur via cette classe pour permettre à cette classe de hériter plus d'entités) * @Author: Ding GuoHua * / Classe publique. Nom d'utilisateur de chaîne privée; Sexe à cordes privées; adresse de chaîne privée; // Getter et Setter ......} </span>
2.2.3 Créer ORDERSCCUSTOMPAPPER.Java, le code est le suivant:
<span style = "Font-Family: Comic Sans MS; Font-Size: 18px;"> package com.mybatis.mapper; Importer java.util.list; import com.mybatis.entity.orderscustom; / ** * @classname: ordersmapperstom * @Description: TODO (ORDERSMAPERCUSTUST MAPPER) * @Author Ding GuoHua * / Interface publique ORDERSCUSTOMMPEPPER {/ ** Query ORDERS, Associate Query Informations User * / Public List <DrandCustom> FindOrdersUser (); } </span>2.2.4 Création d'OrdersCustomPapper.xml est le même que le nom d'interface correspondant dessus. Lors du chargement du fichier de configuration via l'interface du mappeur, le code est le suivant:
<span style = "Font-Family: Comic Sans MS; Font-Size: 18px;"> <? Xml Version = "1.0" Encoding = "UTF-8"?> <! Doctype Mapper public "- // Mybatis.org//dtd Mapper 3.0 // en" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <! - Espace de noms d'espace de noms, la fonction consiste à classer la gestion de SQL, qui est comprise comme SQL Isolation Note: Lors de l'utilisation du développement de l'agent de mappeur, l'espace de noms a une fonction spéciale, l'espace de noms est égal à l'interface maximale Adresse -> < namespace = "com.mybatis.mapper.ordersCustomPepper"> <! - Commandes de requête, Associate Query Informations d'utilisateur -> <select id = "findordersuser" resultType = "com.mybatis.entity.orderscustom"> select t1. *, t2.Username, t2.Sex, t2 t1.user_id = t2.id </ select> </naunper> </span>
2.3 Implémentation de ResultMap
2.3.1 Instruction SQL Idem que ci-dessus
2.3.2 Idées de cartographie des résultats de résultat:
Utilisez ResultMap pour mapper les informations de commande dans le résultat de la requête dans l'objet Ordors, ajoutez l'attribut utilisateur dans la classe Orders et mappez les informations utilisateur de requête associées à l'attribut utilisateur dans l'objet Orders (il a été ajouté dans l'entité des ordres ci-dessus).
2.3.3 ORDERSCUSTOMPAPPER.XML
1. Définir le résultat, le code est le suivant:
<span style = "Font-Family: Comic Sans MS; Font-Size: 18px;"> <! - Définissez le résultat de l'utilisateur associé à l'ordre de requête, cartlez l'intégralité du résultat de la requête à com.mybatis.entity.orders -> ID: L'identifiant unique de la colonne de requête, l'identifiant unique dans les informations de commande. Si plusieurs colonnes forment un identifiant unique (tel que: la table de dictionnaire dans la conception générale de la base de données utilise une clé primaire conjointe), plusieurs ID doivent être configurés Colonne: Colonne d'identification unique pour les informations sur les informations sur les commandes: La clé principale dans le tableau des commandes dans la base de données est-ce Column = "ORDERS_ID" Property = "ORDERSID" />, similaire à la configuration du fichier de mappage de l'entité Hibernate). -> <id colonnen = "id" propriété = "id" /> <résultat chronn = "user_id" propriété = "userId" /> <result Column = "Number" propriété = "Number" /> <Result Column = "CreateTime" Property = "CreateTime" /> <Result Column = "Remarque" Property "Property =" Remarque " Informations utilisateur -> <! - Association: Informations utilisées pour cartographier la requête associée Propriété de l'objet unique: pour mapper les informations utilisateur de la requête associée à laquelle la propriété dans les commandes -> <association propriété = "utilisateur" javatype = "com.mybatis.entity.User"> <! - Id: l'identificateur unique de la colonne utilisateur de requête associée: Spécifiez la colonne qui identifie uniquement la propriété utilisateur: la propriété MAPPED: <id. Column = "user_id" Property = "ID" /> <Result Column = "Username" Property = "Username" /> <Result Column = "Sex" Property = "Sex" /> <Result Column = "Address" Property = "Address" /> </ Association> </ ResultMap> </ Span>
2. Définition de l'instruction, le code est le suivant:
<span style = "Font-Family: Comic Sans MS; Font-Size: 18px;"> <! - Query Orders, Associate Query User Information, Utilisez le résultat pour implémenter -> <Select Id = "FindordersuserResultMap" ResultMap = "OrdersuSerresultMap"> SELECT T1. *, T2Sern, t2.SEX, T2 t1.user_id = t2.id </lect> </span>
3. Ajoutez la méthode suivante à l'interface OrderCustomPapper.Java:
<span style = "Font-Family: Comic Sans MS; FONT-Size: 18PX;"> / ** Informations utilisateur de requête de l'Ordre de requête, utilisez ReslutMap pour implémenter * / public List <Dorse> findordersUserResultMap (); </span>
4. Le test JUnit de ResultType et Implémentation ResultMap, le code est le suivant:
<span style = "Font-Family: Comic Sans MS; Font-Size: 18px;"> package com.mybatis.test; import java.io.inputStream; Importer java.util.list; import org.apache.ibatis.io.resources; import org.apache.ibatis.session.sqlSessionFactory; import org.apache.ibatis.session.sqlSessionFactoryBuilder; import org.junit.before; import org.junit.test; import com.mybatis.entity.orders; import com.mybatis.entity.orderscustom; import com.mybatis.mapper.ordersCustomMapper; classe publique ORDERSCUSTOMMAPTEREST {private sqlSessionFactory SqlSessionFactory; // Cette méthode consiste à exécuter @Before public void setup () lève exception {string ressource = "sqlmapconfig.xml"; InputStream inputStream = Resources.getResourceSstream (ressource); // Créer sqlSessionFcatory sqlSessionFactory = new SQLSessionFactoryBuilder (). Build (InputStream); } // interroger l'ordre, associer les informations de l'utilisateur de requête et utiliser le résultat pour implémenter le test @Test public void testFinDordersuser () {sqlSession sqlSession = sqlSessionFactory.OpenSession (); // Créer l'objet proxy ordersCustomPapper OC = sqlSession.getMapper (ordersCustomPapper.class); // appelle la méthode du mappeur list <ordrscustom> list = OC.FindordersUser (); System.out.println (liste); sqlSession.close (); } // interroger l'ordre, associer les informations de l'utilisateur de requête et tester implémenté à l'aide de resultMap @Test public void testFindordersUserResultMap () {sqlSession sqlSession = sqlSessionFactory.OpenSession (); // Créer un objet proxy ORDERSCUSTOMMPPEP OC = SQLSESSION.GetMapper (ordersCustomPapper.class); // appelle la méthode du mappeur list <Dors> list = OC.FindordersUserResultMap (); System.out.println (liste); sqlSession.close (); }} </span>5. ResultType et ResultMap implémenter un résumé de la requête individuelle
Mettre en œuvre une requête individuelle:
A.ResultType: Il est relativement simple à mettre en œuvre à l'aide de ResultType. Si le nom de la colonne de requête n'est pas inclus dans le POJO, vous devez ajouter les attributs correspondants du nom de la colonne pour terminer le mappage.
né S'il n'y a pas d'exigences particulières pour les résultats de la requête, il est recommandé d'utiliser ResultType.
C.ResultMap: Le résultat doit être défini séparément, ce qui est un peu gênant. S'il existe des exigences particulières pour les résultats de la requête, l'utilisation de ResultMap peut compléter les attributs du pojo de mappage de requête associé.
D.ResultMap peut implémenter le chargement paresseux, ResultType ne peut pas implémenter le chargement paresseux.
3. Query un-à-plusieurs
3.1 Exigences: les commandes de requête (utilisateurs associés) et les détails des commandes;
3.2 Ajouter la propriété List <CrordDetail> OrderDetails dans la classe ORDERS.Java (l'entité ci-dessus a été ajoutée). Enfin, les informations de commande seront mappées en commandes et les détails de la commande correspondant à l'ordre sont mappés dans la propriété OrderDetails par ordre.
3.3 Ajouter ce qui suit dans OrdersCustomPapper.xml
<span style = "Font-Family: Comic Sans MS; Font-Size: 18px;"> <! - Query Order Order Order Association User and Order Detail -> <Select Id = "findordersandOrderDeTailResultMap" ResultMap = "OrderSandDeterDetailResultMap"> SELECT T1. *, T2.USERN, T2.SEX, T2.ADDRES t3.items_id, t3.items_num, t3.orders_id à partir des ordres t1, t_user t2, orderdetail t3 où t1.user_id = t2.id et t3.orders_id = t1.id </lect> </span>
La définition de ResultMap est également ajoutée à OrdersCustomMapper.xml
<span style = "Font-Family: Comic Sans MS; Font-Size: 18px;"> <! - ResultMap pour les commandes de requête (utilisateurs associés) et les détails de commande -> <ResultMap Type = "com.mybatis.entity.orders" id = "ordonnance prolonge l'héritage, ne configurez pas le mappage des informations de commande et les informations de l'utilisateur -> <! - Informations de détail des commandes associées Une requête d'association de commande a plusieurs détails de commande. You need to use collection mapping collection: Map multiple records queried in the association property to the collection property ofType: Specify the type of pojo in the mapped collection property--> <collection property="orderdetails" ofType="com.mybatis.entity.OrderDetail"> <!-- id: Unique identification property: To map the unique identifier of the order details to the property of com.mybatis.entity.orderDetail -> <id chronn = "orderDetail_id" propriété = "id" /> <résultat chronn = "items_id" propriété = "itemsid" /> <résultat chronn = "iteles_num" propriété = "itemsnum" /> <résultat column = "orders_id" propriété = "ordersid" /> </ collection>
3.4 Ajouter une méthode à la classe d'interface OrderCustomEmapper.Java, le code est le suivant:
<span style = "Font-Family: Comic Sans MS; FONT-Size: 18PX;"> / ** Ordre de requête (utilisateurs associés) et Détails de l'ordre * / Liste publique <OrderDetail> findOrdersAndOrderDetailResultMap (); </span>
3.5 Ajouter des méthodes de test à la classe de test JUnit, le code est le suivant:
<span style = "Font-Family: Comic Sans MS; Font-Size: 18px;"> // Tester pour les ordres de requête (utilisateurs associés) et les détails de l'ordre @Test public Void TestFinDordersAndOrderDetTailResultMap () {SqlSession SqlSession = SQLSessionFactory.Opensession (); // Créer un objet proxy ORDERSCUSTOMMPPEP OC = SQLSESSION.GetMapper (ordersCustomPapper.class); // appelle la méthode du mappeur list <ordDetail> list = OC.FindordersandOrderDetailResultMap (); System.out.println (liste); sqlSession.close (); } </span>3.6 Résumé
MyBatis utilise la collection de ResultMap pour cartographier plusieurs enregistrements de la requête associée dans une propriété de collection de liste. Implémentation Utilisation de ResultType: MAP Détails des commandes dans OrderDetails dans les ordres, qui doit être traité par vous-même, utilisez une traversée à double boucle, supprimez les enregistrements en double et placez les détails des commandes dans OrderDetails.
4. Query de plusieurs à plusieurs
4.1 Exigences: Interrogez l'utilisateur et les informations sur le produit achetées par l'utilisateur
4.2 Idées de cartographie
Carte les informations de l'utilisateur dans l'utilisateur, ajoutez la liste d'attributs de la liste de commandes <Dorse> OrdersListe dans la classe utilisateur pour mapper la liste d'ordre; Ajoutez la liste des attributs de la liste des détails des commandes <CommanderDetail> OrderDetials dans les commandes, mappez les détails de la commande sur OrderDetials; Ajoutez l'attribut des éléments dans OrderDetail pour cartographier les éléments correspondant aux détails de la commande à l'élément.
4.3 ORDERSCUSTOMMPEPT.xml ajoute le code suivant:
<span style = "Font-Family: Comic Sans MS; Font-Size: 18px;"> <! - ResultMap pour interroger les informations du produit achetées par l'utilisateur -> <resultMap Type = "com.mybatis.entity.user" id = "userAndemSesUil Property = "Username" /> <Result Column = "Sex" Property = "Sex" /> <Result Column = "Address" Property = "Address" /> <! - Informations de commande Un utilisateur correspond à plusieurs commandes, en utilisant le mappage de collection -> <Collection Property = "Orderslist" ofType = "com.mybatis.entity.orders"> <id Column = "id" Property = "id" /> <corerse propriété = "userId" /> <result Column = "Number" Property = "Number" /> <Result Column = "CreateTime" Property = "CreateTime" /> <Result Column = "Note" Property = "Remarque" /> <! ofType = "com.mybatis.entity.OrderDetail"> <id Column = "OrderDetail_id" Property = "ID" /> <Result Column = "items_id" Property = "ItemSID" /> <Result Column = "items_num" Property = " propriété = "itemsName" /> <result Column = "itemsName" /> <result Column = "itemsName" /> <result Column = "items" javatype = "com.mybatis.entity.items"> <id chronn = "items_id" propriété = "id" /> <résultat chronning = "items_name" propriété = "itemsname" /> <le résultat chronique = " propriété = "itemsName" /> <résultat chronn = "items_detail" propriété = "Détail" /> <résultat chronn = "items_price" propriété = "Price" /> </ association> </section> </ collection> </sultMap> <! - Pour interroger les informations du produit achetées par les utilisateurs et les utilisateurs, utilisez ResulAmap -> <Select Id = "FindUseranDITEMSRESULTMAP" resultMap = "userAndremsResultMap"> SELECT T1. *, T2.Username, T2.Sex, T2.Address, T3.id OrderDetail_Id, T3.Itemsname Items_Name, T4.Detail Items_Detail, T4.Price ORDERDETAIL T3, éléments T4 où t1.user_id = t2.id et t3.orders_id = t1.id et t3.items_id = T4.id </lect> </span>
4.4 Ajouter la méthode suivante dans OrderCustomPapper.java:
<span style = "Font-Family: Comic Sans MS; FONT-Size: 18PX;"> / ** Interroger les informations du produit achetées par les utilisateurs et les utilisateurs * / Liste publique <User> findUserAndremsResultMap (); </span>
4.5 Ajouter des méthodes de test au test JUnit, le code est le suivant:
<span style = "Font-Family: Comic Sans MS; Font-Size: 18px;"> // Interroge les informations des produits achetés par l'utilisateur et l'utilisateur @Test public void TestFindUserAnSermSesultMap () {SqlSession SqlSession = SQLSessionFactory.Opensession (); // Créer un objet proxy ORDERSCUSTOMMPPEPOC OC = SQLSESSION.GETMPAPER (ORDERSCUSTOMMPEPTER.CLASS); // appelle la méthode du mappeur List <Derser> list = OC.FindUseranDiTemSResultMap (); System.out.println (liste); sqlSession.close (); } </span> 4.6 Résumé du résultat
ResultType:
Fonction: Map que les résultats de la requête dans POJO en fonction du nom de colonne SQL POJO Nom de l'attribut.
Occasion: Affichage commun des enregistrements détaillés, par exemple lorsque les utilisateurs achètent les détails du produit et affichent toutes les informations de requête associées sur la page, vous pouvez directement utiliser ResultType pour cartographier chaque enregistrement dans un POJO et traverser la liste (Pojo dans la liste) sur la page frontale.
ResultMap:
Utilisation: association et collection pour compléter la cartographie avancée individuelle et un à plusieurs (il existe des exigences de cartographie spéciales pour les résultats).
association:
Fonction: Carte les informations de requête associées dans un objet PoJO.
Occasion: Afin de faciliter l'interrogation des informations associées, vous pouvez utiliser l'association pour cartographier les informations de commande associées dans les attributs POJO des objets utilisateur, tels que: interroger les commandes et les informations utilisateur associées.
L'utilisation de ResultType ne peut pas cartographier les résultats de la requête à l'attribut POJO de l'objet PoJO. Choisissez d'utiliser ResultType ou ResultMap en fonction des besoins de traversant la requête Set Set.
Collection:
Fonction: Carte les informations de requête associées dans une collection de liste.
Occasion: Afin de faciliter l'interrogation des informations d'association de traversée, vous pouvez utiliser la collection pour cartographier les informations d'association à la collection de liste. Par exemple: interroger le module de portée de l'autorisation de l'utilisateur et le menu sous le module, vous pouvez utiliser la collection pour cartographier la liste des modules pour cartographier les attributs de liste de menu de l'objet module. Le but de cela est de faciliter la traversée de la traversée de l'ensemble de résultats de requête.
Si vous utilisez ResultType, vous ne pouvez pas cartographier les résultats de la requête à la collection de liste.
Ce qui précède est la cartographie avancée de Mybatis qui vous est présentée par l'éditeur. J'espère que cela vous sera utile. Si vous avez des questions, veuillez me laisser un message et l'éditeur vous répondra à temps. Merci beaucoup pour votre soutien au site Web Wulin.com!