1. Übersicht
Wenn Sie die Zuordnung in myBatis auswählen, kann der Rückgabetyp mit Ergebnistyp oder resultMap verwendet werden. Der Ergebnistyp repräsentiert direkt den Rückgabetyp, während Ergebnismap eine Referenz auf den externen Ergebnismap ist, aber das Ergebnistyp und das Ergebnismap können nicht gleichzeitig vorhanden sein.
Wenn MyBatis die Zuordnung abfragt, wird jede Attributabfrage in einer entsprechenden Karte platziert, wobei der Schlüssel der Attributname und der Wert sein entsprechender Wert ist.
① Wenn das angegebene Rückgabe -Attribut des Retyps das Ergebnistyp ist, nimmt MyBatis die Schlüsselwertpaare in der Karte aus und weisen die entsprechenden Attribute des vom Ergebnistyps angegebenen Objekts zu. Tatsächlich ist der Rückgabetyp jeder Abfragekarte von myBatis resultMap. Wenn das angegebene Attribut für Rückgabetyp jedoch ein Ergebnistyp ist, weist MyBatis automatisch den entsprechenden Wert den Attributen des vom Ergebnistyps angegebenen Objekts zu.
② Wenn der bereitgestellte Rückgabetyp resultMap ist, da die Karte das Domänenmodell nicht gut darstellen kann, muss sie es weiter in das entsprechende Objekt selbst umwandeln, was in komplexen Abfragen häufig sehr nützlich ist.
2. Ergebnisstyp
Blog.javapublic class Blog {private int id; privater String -Titel; privater String -Inhalt; privater String -Eigentümer; private Liste <Kommentar> Kommentare;}Die entsprechende Datenbanktabelle speichert ID-, Titel-, Inhalts- und Eigentümerattribute.
<typealias alias = "blog" type = "com.tiantian.mybatis.model.blog"/> <select id = "selectBlog" parameterType = "int" resultType = "blog"> select * aus t_blog wobei id = #{id} </select> </select>MyBatis erstellt automatisch ein Ergebnismap -Objekt und verkapuliert dann das Schlüsselwertpaar basierend auf dem gefundenen Attributnamen. Anschließend sehen Sie, dass der Rückgabetyp ein Blog -Objekt ist, und dann das dem Blog -Objekt entsprechende wichtige Wertpaar aus dem Ergebnismap herausnehmen und es zuweisen.
3. Ergebnismap
Es ist auch sehr nützlich, wenn der Rückgabetyp direkt ein Ergebnismap ist, der hauptsächlich für komplexe gemeinsame Abfragen verwendet wird, da es nicht erforderlich ist, einfache Abfragen durchzuführen. Schauen Sie sich zunächst eine einfache Abfrage mit einem Retyp -Ergebnismap an und sehen Sie sich dann die Verwendung komplexer Abfragen an.
① Schreiben Sie eine einfache Abfrage
<resultMap type = "blog" id = "blogresult"> <id column = "id" property = "id"/> <resultal column = "title" property = "title"/> <resultal columne Eigenschaft = "Eigentümer"/> <</resultmap> <select id = "selectBlog" parameterType = "int" resultMap = "bloGresult"> SELECT * Von T_BLOG WHERE ID = #{ID} </select>Der Wert von resultmap in der ausgewählten Karte ist die ID eines externen Ergebnismaps, der angibt, auf welches Ergebnis es zugeordnet ist. Das Typattribut des externen Ergebnismaps gibt an, welches Typ das Ergebnis des Ergebnismaps ist. Hier ist der Blog -Typ, daher wird MyBatis ihn als Blog -Objekt herausnehmen. Die untergeordnete Knoten -ID des Ergebnismap -Knotens wird verwendet, um die ID des Objekts zu identifizieren, während der Ergebnis unter dem untergeordneten Knoten verwendet wird, um einige einfache Eigenschaften zu identifizieren. Die Spalteneigenschaft repräsentiert die aus der Datenbank abgebrachten Attribute, und die Eigenschaft repräsentiert, welche Eigenschaft der entsprechende Wert der abfragten Eigenschaft dem Entitätsobjekt zugewiesen wird. Auf diese Weise schreiben Sie resultMap für einfache Abfrage.
②komplex Abfrage
Es gibt eine Kommentarklasse, die eine Blog -Referenz hat, die angibt, für welchen Blog es sich handelt. Beim Abfragen von Kommentaren muss der entsprechende Blog auch sein Blog -Attribut gefunden und zugewiesen werden.
public class Comment {private int id;private String content;private Date commentDate = new Date();private Blog blog;}<!--From CommentMapper.xml file--><resultMap type="Comment" id="CommentResult"><association property="blog" select="selectBlog" column="blog" javaType="Blog"/></resultMap><select id="selectComment" parameterType="int" resultMap = "commentResult"> SELECT * Aus T_Comment, wobei id = #{id} </select> <select id = "selectBlog" parameterType = "int" resultType = "blog" "> ausgewählt * aus t_blog wobei id = #{id} </select>Fordern Sie zunächst die SELECT -Karte mit ID als Auswahl- und Auswahl- und erhalten Sie ein Ergebnismap -Objekt mit ID als commentResult ab. Sie können sehen, dass der Rückgabetyp des entsprechenden Ergebnismaps ein Kommentarobjekt ist, das nur einen Assoziationsknoten hat, und es gibt keine ID- und Ergebnis -untergeordnete Knoten, die der oben genannten einfachen Abfrage entsprechen. Es wird jedoch weiterhin die entsprechende ID und andere Attribute dem Kommentarobjekt zugewiesen. Dies ist, was die zuvor erwähnten MyBatis zuvor erwähnt hat, dass es eine automatische Kapselungsfunktion hat. Solange der Rückgabetyp bereitgestellt wird, verwendet MyBatis die Abfrageergebnisse, um das entsprechende Objekt gemäß seinem eigenen Urteil zu verkapulieren. Wenn es in der obigen einfachen Abfrage nicht klar angibt, welches Feld der ID entspricht und welches Feld dem Titel im Ergebnismap entspricht, wird MyBatis es auch dazu beitragen, es nach seinem eigenen Urteil zu verkapulieren. MyBatis 'eigenes Urteil ist es, das Feld der Abfrage oder ihren entsprechenden Alias mit den Attributen des Rückkehrobjekts zu vergleichen. Wenn es übereinstimmt und auch der Typ übereinstimmt, wird es MyBatis es zuweisen. Ein Blog -Attribut ist in der entsprechenden Ergebnismap zugeordnet, und sein entsprechender Java -Typ ist Blog. In der obigen Schreibmethode wird das zugeordnete Objekt durch Unterabfragen zugeordnet und kann natürlich auch direkt durch die Assoziationsabfrage zugeordnet werden. Im obigen Association Child Node gibt das Eigenschaftsattribut an, welche zugehörige Eigenschaft der RetMAP -Rückgabetyp ist. Für das obige Beispiel wird das Blog -Attribut mit einem Kommentar verwaltet. SELECT Zeigt an, welche Auswahlkarte das entsprechende zugeordnete Attribut ausgewählt hat, dh eine ausgewählte Karte mit dem Wert, der dem zugeordneten Attributobjekt entspricht, entspricht. Die Spalte gibt das Schlüsselwertpaar an, das dem Ergebnismap mit ID commentResult entspricht. Dieses Schlüsselwertpaar wird als Parameter für die Unterabfrage des zugehörigen Objekts verwendet, dh der Wert der Blog-Attribut-Abfrage in SelectCompment wird als Parameter an die Unterabfrage des zugehörigen Objektblogs zur Unterabfrage des zugehörigen Objektblogs übergeben. Der Javatyp gibt an, in welcher Art des aktuellen zugeordneten Objekts Java befindet.
Die oben genannten Eins erstellt bei Eins-zu-Eins-Beziehungen eine Eins-zu-Eins- oder Eins-zu-Viele-Beziehungen. In den tatsächlichen Anwendungen gibt es eine andere Anwendung, die häufiger verwendet. Es soll die entsprechenden mehr Parteien durch eins zu eins herausfinden. Wenn Sie die weiteren Parteien herausnehmen, muss es auch eins zu eins in Verbindung bringen: Wenn Sie das Blog-Objekt herausnehmen, nehmen Sie alle entsprechenden Kommentare heraus, und wenn Sie den Kommentar herausnehmen, muss er den entsprechenden Blog, der in Java durch eine Anfrage herausgenommen wird, noch abnehmen.
<!-aus BlogMapper.xml-Datei-> <resultmap type = "blog" id = "blogresult"> <id column = "id" Property = "id"/> <collection Properation = "Kommentare" select = "selectComentsBOGBlog" column = "id" id "vontype =" comment "> </collection> </resultMapMap> <resultmap type" id "id" commentresult> javatype = "blog" column = "blog" "select =" selectBlog "/> </resultmap> <select id =" selectBlog "parameterType =" int "resultMap =" bloGresult "> select * aus t_blog wob = #{blogid} </select>Der Eintrag der oben genannten Anforderung ist eine Auswahlkarte mit ID -SelectBlog, und das Rückgabeergebnis ist ein Ergebnismap mit ID Blockesult. Die Art der ID blogresult ist Blog, die die Attribute und Felder der ID angibt. Das Angeben von ID wird sich sehr auf den Bau von MyBatis in internem Einfluss auswirken. Es ist einem Kommentarobjekt zugeordnet. Weil ein Blog viele Kommentare haben kann, die eine Sammlung sind, wird er mit einer Sammlung abgebildet. Der SELECT gibt weiterhin an, welche Unterabfrage die entsprechenden Kommentare abfragt. Spalten bedeutet, welchen Feldwert der oben gefundene Feldwert als Parameter an die Unterabfrage übergeben wird. Oftype repräsentiert auch den Rückgabetyp. Der Rückgabetyp hier ist der Typ in der Sammlung. Der Grund, warum Oftype anstelle von Typ verwendet wird, ist, dass es in MyBatis verwendet wird, um es von der Vereinigung zu unterscheiden.
public void selectComentmentsByblogtest () {SQLSession Session = util.getSQLSessionFactory (). OpenSession (); commentMapper commentmapper = session.getMapper (commentMapper.ClASS); LIST <KOMPENTEL> comments = commentMapper.SelectComentsBybog (6); void testSelectone () {SQLSession Session = util.getSQLSessionFactory (). OpenSession (); BlogMapper BlogMapper = Session.getMapper (BlogMapper.ClASS); Blog blog = BlogMapper.Selectblog (6); LIST <Kommentare <Kommentare = Blog.GetPorttrainments (); falls! Kommentare) system.out.println (Kommentar);} Sitzung.CLOSE ();}Das obige ist der Ergebnistyp und das Ergebnismap in MyBatis, das Ihnen vom Herausgeber vorgestellt wurde. Ich hoffe, es wird Ihnen hilfreich sein. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und der Editor wird Ihnen rechtzeitig antworten. Vielen Dank für Ihre Unterstützung auf der Wulin.com -Website!