Dieser Artikel stellt hauptsächlich die dynamische SQL-Anweisungsanalyse in Mybatis vor. Der Beispielcode in diesem Artikel ist sehr detailliert und hat einen gewissen Referenzwert für jedermanns Studium oder Arbeit. Freunde in Not können darauf zurückgreifen. Es gibt zwei Möglichkeiten, SQL in Mybatis zu konfigurieren: eine ist die Verwendung von XML und die andere die Verwendung von Anmerkungen. Mybatis verwendet Anmerkungen zum Konfigurieren von SQL, wird jedoch aufgrund der eingeschränkten Konfigurationsmöglichkeiten und der schlechten Lesbarkeit bei komplexem SQL selten eingesetzt. Mybatis verwendet häufig die XML-Konfigurationsmethode. Mit einigen einfachen XML-Elementen kann es die Funktion von dynamischem SQL erfüllen. Im Mapping-XML von Mybatis können viele Urteile konfiguriert werden, um viele Funktionen zu erreichen, deren Implementierung viel Code erfordert, was die Codemenge erheblich reduziert und die Flexibilität, hohe Konfigurierbarkeit und Wartbarkeit von Mybatis widerspiegelt.
Das if-Element Das if-Element ist die am häufigsten verwendete Beurteilungsanweisung, die der if-Anweisung in Java entspricht. Es wird häufig in Verbindung mit dem Testattribut verwendet. <select id="findRole1" parameterType="string" resultMap="roleResultMap"> Wählen Sie role_no, role_name, note aus t_role, wobei 1=1 <if test="Rollenname != null und Rollenname !=''"> und Rollenname wie concat('%', #{roleName}, '%') </if> </Auswählen> Wenn der Parameter roleName an den Mapper übergeben wird und der Parameter nicht leer ist, wird eine Fuzzy-Abfrage für roleName erstellt, andernfalls wird diese Bedingung nicht erstellt. Das if-Element von Mybaties erspart viel Arbeit beim Einfügen von SQL und verwaltet es in XML. wählen, wann, sonst Elemente Wenn bei der Beurteilung mehrere Optionen zur Verfügung stehen und nicht nur zwei, handelt es sich um eine Anweisung ähnlich der Funktion switch...case...default.... Verwenden Sie in der zugeordneten SQL-Anweisung die Elemente „choose“, „when“ und „sonst“, um diese Funktion auszuführen. <select id="findRole2" parameterType="Rolle" resultMap="Rollen-ResultMap"> Wählen Sie role_no, role_name, note aus t_role wobei 1 = 1 <wählen> <wenn test="roleNo != null und roleNo !=''"> UND Rollennr. = #{Rollennr.} </wann> <wenn test="Rollenname != null und Rollenname !=''"> UND Rollenname wie concat('%', #{roleName}, '%') </wann> <sonst> UND Hinweis ist nicht null </sonst> </wählen> </Auswählen> Das obige Szenario ist: Erstens: Wenn die Rollennummer nicht leer ist, wird nur die Rollennummer als Abfragebedingung verwendet. Wenn die Rollennummer leer ist, der Rollenname jedoch nicht leer ist, wird der Rollenname als Bedingung für die unscharfe Suche verwendet. Wenn sowohl die Rollennummer als auch die Rollennummer leer sind, darf die Rollennotiz nicht leer sein. trimmen, wo, Elemente festlegen Das Hinzufügen von „1=1“ zur vorherigen SQL-Anweisung kann seine Funktion erfüllen, es gibt jedoch eine bessere Implementierung, nämlich die Verwendung von „where“. Wenn die Bedingung im Where-Element erfüllt ist, wird das Where-SQL-Schlüsselwort zum zusammengestellten SQL hinzugefügt, andernfalls wird es nicht hinzugefügt. <select id="findRole3" parameterType="Rolle" resultMap="Rollen-ResultMap"> Wählen Sie role_no, role_name, note aus t_role <wo> <if test="Rollenname != null und Rollenname !=''"> und Rollenname wie concat('%', #{roleName}, '%') </if> <if test="Hinweis != null und Hinweis !=''"> und beachten Sie wie concat('%', #{note}, '%') </if> </wo> </Auswählen> Manchmal müssen Sie spezielle SQL-Syntax entfernen, beispielsweise das allgemeine „und“, „oder“ usw. Auch durch den Einsatz des Zierelements erzielen Sie den gewünschten Effekt. „Prefix“ stellt das Präfix der Anweisung dar und „prefixOverrides“ gibt an, welche Zeichenfolge entfernt werden muss. Es entspricht der vorherigen Where-Anweisung. <select id="findRole4" parameterType="string" resultMap="roleResultMap"> Wählen Sie role_no, role_name, note aus t_role <trim prefix="wo" prefixOverrides="und"> <if test="Rollenname != null und Rollenname !=''"> und Rollenname wie concat('%', #{roleName}, '%') </if> </trimmen> </Auswählen> Wenn Sie im Ruhezustand aufgrund der Aktualisierung eines bestimmten Felds alle Felder an das persistente Objekt senden müssen, beeinträchtigt dies die Ausführungseffizienz der SQL-Anweisung. Der beste Ansatz besteht darin, den Primärschlüssel und die Aktualisierungsfeldwerte zur Aktualisierung an SQL zu übergeben. Diese Funktion kann durch das Set-Element erreicht werden. Wenn ein festgelegtes Element auf ein Komma stößt, wird das entsprechende Komma automatisch entfernt. <update id="updateRole" parameterType="Rolle"> t_role aktualisieren <Satz> <if test="Rollenname != null und Rollenname !=''"> Rollenname = #{Rollenname}, </if> <if test="Hinweis != null und Hinweis != ''"> Notiz = #{Notiz} </if> </Satz> wobei role_no = #{roleNo} </Aktualisieren> foreach-Element Das foreach-Element ist eine Schleifenanweisung, die zum Durchlaufen der Sammlung verwendet wird. Es kann Arrays und Sammlungen von List- und Set-Schnittstellen gut unterstützen und stellt Durchlauffunktionen für diese bereit. Es wird häufig für das Schlüsselwort in in SQL verwendet. <select id="findRoleByNums" resultMap="roleResultMap"> Wählen Sie role_no, role_name, note from t_role where role_no in <foreach item="Rollennr" index="index" collection="Rollennr.Liste" öffnen="(" Trennzeichen=""," schließen=")"> #{Rollennummer} </foreach> </Auswählen> Die roleNoList der Sammlungskonfiguration ist der Name des übergebenen Parameters, der ein Array, eine Liste, ein Set oder eine andere Sammlung sein kann. Element konfiguriert das aktuelle Element in der Schleife. Der Index konfiguriert die Position des aktuellen Elements in der Sammlung. Durch Öffnen und Schließen können Sie konfigurieren, welche Symbole zum Verpacken dieser Sammlungselemente verwendet werden. Separator ist das Trennzeichen zwischen Elementen. Verwenden Sie das Testattribut, um die Zeichenfolge zu bestimmen Test wird für bedingte Beurteilungsaussagen verwendet, was der Beurteilung von wahr oder falsch entspricht. In den meisten Szenarien wird es hauptsächlich verwendet, um zu beurteilen, ob etwas leer ist oder nicht. <select id="getRoleTest" parameterType="string" resultMap="roleResultMap"> Wählen Sie role_no, role_name, note aus t_role <wenn test="Typ == 'Y'.toString()"> wobei 1 = 1 </if> </Auswählen> Wenn type='Y' an SQL übergeben wird, kann Mybatis die Bedingung hinzufügen, dass 1=1 ist. Für die Zeichenfolgenbeurteilung kann daher die Methode toString() zum Vergleich hinzugefügt werden. Das Bind-Element Das Bind-Element wird verwendet, um eine Kontextvariable über einen OGNL-Ausdruck zu definieren, was bequemer zu verwenden ist. Beispielsweise wird bei Fuzzy-Abfragen, wenn es sich um eine MySQL-Datenbank handelt, häufig Concat verwendet, das die Parameter mit % verbindet. In der Oracle-Datenbank gibt es so etwas jedoch nicht. Das in der Oracle-Datenbank verwendete Verbindungssymbol ist „||“, daher benötigt SQL zwei Formen, um es zu implementieren. Durch die Verwendung des Bind-Elements ist es nicht erforderlich, die Datenbanksprache zu verwenden. <select id="findRole5" parameterType="string" resultMap="roleResultMap"> <bind name="Muster" Wert="'%' + _parameter + '%'" /> SELECT role_no, role_name, note FROM t_role wobei role_name wie #{pattern} ist. </Auswählen> Das Obige ist meine Zusammenfassung allgemeiner Wissenspunkte zu dynamischen SQL-Anweisungen in Mybatis während des Lernprozesses. Ich hoffe, dass jeder gemeinsam lernen und sich verbessern kann! Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird. Das könnte Sie auch interessieren:
|
<<: So kompilieren Sie den Linux-Kernel
>>: JavaScript-Grundlagen: Fehlererfassungsmechanismus
Inhaltsverzeichnis 1. Einleitung 2. Installation ...
1. Flex-Richtung: (Richtung der Elementanordnung)...
Vorwort Dies ist eine alte Forderung, aber es gib...
Heute habe ich eine Aktivität für einen roten Ums...
Bild-Tag <IMG> einfügen Die farbenfrohen Web...
Die Arbeit als Betriebs- und Wartungsingenieur is...
Vorwort Bei der Arbeit an einem Hochverfügbarkeit...
Merkmale einer Single-Page-Anwendung „Annahme:“ A...
Name des Autors:   no-break space = gesc...
Vorwort Heute werde ich Ihnen ein Holy-Grail-Layo...
Karussell-Animationen können das Erscheinungsbild...
Einführung in jQuery Die jQuery-Bibliothek kann e...
Textschatten Textschatten: horizontaler Versatz, ...
Inhaltsverzeichnis Ist setState synchron oder asy...
Erstellen eines Containers [root@server1 ~]# dock...