MyBatis 'ursprünglicher Körper ist Ibatis, und jetzt hat er sich von der Apache Foundation getrennt. Die neue offizielle Website ist http://www.mybatis.org/.
Ich kannte die magische Verwendung dieser Annotation nicht, bevor ich den MyBatis -Quellcode studierte, aber als ich sah, dass es diese Annotation beim Parsen des Parameters gab, habe ich verstanden, dass bei der Rückgabe von Typen wie Map <String, Map <String <String <String, Objekt >> oft schwierig ist, dass wir ein weiteres Modell erstellen können.
Dann können wir diese Annotation verwenden
@Retention (retentionPolicy.runtime) @target (elementtype.method) public @Interface MAPKEY {string value ();}Es ist offensichtlich, dass diese Annotation für die Methode verwendet wird, und die spezifische Verwendung besteht darin, festzustellen, was der Schlüssel der externen Karte ist. Auf diese Weise können wir sehr komplexe Ergebnisse abfragen, ohne eine neue Entität zu erstellen.
PS: Schauen wir uns MyBatis mit @Mapkey Annotation an, um mehrere Abfragedatensätze in die Karte zu erhalten, um den Wert des Feldes mit der Methode Get () einfach zu erhalten.
Anforderungsszenario:
Batch-Find mehrere Daten aus der Datenbank, einschließlich zwei Felder: ID und Name. Ich hoffe, dass das Ergebnis direkt mit MAP empfangen werden kann und dann der Wert des Namens leicht über MAP.get (ID) erhalten werden kann.
Frage:
Wenn Sie den folgenden Code verwenden, wird ein Fehler gemeldet, da MyBatis die Ergebnisse in der Karte in Form von ("ID": 123) und ("Name": "Jack") ein Fehler gemeldet wird. Wenn Sie das Ergebnis zurückgeben, ist es in Ordnung, einen Datensatz mit ID und Name zu erhalten. Wenn Sie mehrere Datensätze zurückgeben, gibt es mehrere ("ID": 123) und ("ID": 124), dann wird MyBatis dumm sein und nicht wissen, wie man damit umgeht.
Karte <String, Object> m = abcdao.getNamesByIds (IDLILT);
Die Lösung besteht darin, eine andere Karte außerhalb zu verwenden:
Karte <Integer, Karte <String, Objekt >> m = abcdao.getNamesByIds (IDLILT);
Fügen Sie dann dieser Methode eine Annotation hinzu:
<span style = "White-Space: PRE"> </span>/** <span style = "White-Space: PRE"> </span> * Nehmen Sie den Namen in Stapeln basierend auf mehreren IDs <span style = "White-Space: PRE"> </span> * @param List List, die MAP Key = "id" <span Style = "White-Space: Pre" </span> </span> </span> </span> </span> </span> </span> </span> </span> </span> </span> </a. style = "White-Space: PRE"> </span> */<span style = "White-Space: PRE"> </span> @mapkey ("id") <span style = "White-Space: PRE"> </span> public map <Integer, Karte <String, Objekt >> getNamesByIds (Liste <map <string, Objekt >> List);Diese Annotation zeigt an, dass der Schlüssel der äußersten Karte der Wert des Felds "ID" im Abfrageergebnis ist.
Die Konfiguration in Mapper.xml lautet wie folgt:
<select id = "getNamesByIds" resultType = "java.util.map"> id, Name von tb_abc wobei ID in <foreach item = "item" sammel
Das obige ist eine detaillierte Erklärung für die Verwendung von @mapkey in MyBatis Annotation, die 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!