Empfohlenes Lesen:
MyBatis Einführung Lerntutorial (i) - MyBatis schneller Start
Was ist dynamische SQL? Was ist die Funktion von Dynamic SQL?
In der traditionellen Art der Verwendung von JDBC glaube ich, dass Sie sie spleißen müssen, wenn Sie komplexe SQL -Anweisungen kombinieren. Wenn Sie nicht vorsichtig sind, auch wenn Sie Räume fehlen, führt dies zu Fehlern. MyBatis 'dynamische SQL -Funktion besteht darin, dieses Problem zu lösen. Es kann zu sehr flexiblen SQL -Anweisungen durch die if, wählen Sie, wann, ansonsten, wobei, gesetzt, für Each -Tags und damit die Effizienz von Entwicklern verbessert werden können.
Lassen Sie uns den Charme von MyBatis Dynamic SQL erleben:
1. Wenn: Sie können beurteilen, und ich kann auch beurteilen!
Wer versteht als Programmierer nicht, ob! Sie können auch in mybatis verwenden:
<select id = "findUserById" resultType = "user"> select * vom Benutzer wobei <if test = "id!
Das obige Beispiel: Wenn die eingehende ID nicht leer ist, spleißt SQL ID = #{ID}. Ich glaube, jeder kann das verstehen, indem ich es liest, und ich werde nicht viel sagen.
Sorgfältige Leute finden ein Problem: "Das ist falsch mit Ihnen! Wenn die ID, in die Sie übergeben, NULL ist, wird Ihre endgültige SQL -Anweisung vom Benutzer ausgewählt, wo und deleteFlag = 0, es gibt ein Problem mit dieser Anweisung!"
Ja, zu diesem Zeitpunkt sollte das Tag von MyBatis großartig gemacht werden:
2. Wo mit mir SQL Statement Spleißbedingungen dreht sich alles um die Wolken!
Ändern wir das obige Beispiel durch: WHERE:
<select id = "findUserById" resultType = "user"> select * vom Benutzer wobei <Where> <if test = "id!
Einige Leute fragen sich kurz: "Was machst du? Im Vergleich zum oben genannten gibt es nur ein zusätzliches, wo tag! Wird dies immer noch ausgewählt * vom Benutzer wo und deleteFlag = 0?"
In der Tat gibt es auf der Oberfläche nur ein zusätzliches Where -Tag, aber im Wesentlichen befasst sich MyBatis damit. Wenn es begegnet ist und oder, weiß es, wie man damit umgeht. Tatsächlich können wir diese Verarbeitungsregeln über das Trim -Tag anpassen.
3. Trimm: Mein Territorium, ich triffe die Entscheidung!
Das obige, wo Tag mit TRIM wie folgt wie folgt ausgedrückt werden kann:
<trim prefix = "wobei" Präfixoverrides = "und | oder"> ... </trim>
Es bedeutet: Wann wird und oder oder oder oder oder oder oder oder oder oder wird er entfernt. Zusätzlich zu wo gibt es tatsächlich eine weitere klassische Implementierung, die festgelegt ist.
4. Set: Glauben Sie mir, keine Fehler!
<update id = "updateUser" parameterType = "com.dy.entity.user"> Aktualisierung des Benutzersatzes <if test = "name! = null"> name = #{name}, </if test = "Passwort! null "> id = #{id} </if> und deleteFlag = 0; </where> </update>Die Frage kommt erneut: "Wenn ich nur einen Namen habe, aber nicht null, dann wird dieser SQL Update -Set -Name = #{Name}, wo .........? Das Komma nach Ihrem Namen verursacht einen Fehler!"
Ja, zu diesem Zeitpunkt können Sie das von MyBatis für uns bereitgestellte SET -Tag verwenden. Das Folgende wird über das Set -Tag geändert:
<update id = "updateUser" parameterType = "com.dy.entity.user"> Aktualisierung von Benutzer set <set> <if test = "name! test = "id! = null"> id = #{id} </wennDies kann ausgedrückt werden als:
<trim prefix = "setze" suffiXoverrides = ","> ... </trim>
Wenn Präfixe -Overrids (Präfix) verwendet wird, können Sie es verstehen, dass SuffiXoverrides (Suffix) sie verstehen!
5. foreach: Sie haben es, ich habe nicht, dass es nur du bist!
Es gibt für Java, und es kann für nachgeschaltet werden. In ähnlicher Weise gibt es in MyBatis für Each und kann zum Implementieren von Schleifen verwendet werden. Natürlich sind die Looped -Objekte hauptsächlich Java -Container und -Arrays.
<select id = "selectPostin" resultType = "domain.blog.post"> select *aus post pwhere id in <foreach item = "item" index = "index" collection = "list" open = "(" separator = "," close = ")">#{item} </foreach> </select> </select> </select>Übergeben Sie eine Listeninstanz oder ein Array als Parameterobjekt an myBatis. Beim Auf diese Weise wickelt MyBatis es automatisch in eine Karte und verwendet den Namen als Schlüssel. Die Listeninstanz wird "Liste" als Schlüssel erfolgen, und der Schlüssel der Array -Instanz lautet "Array". Wenn das Schleifenobjekt eine Karte ist, ist der Index in ähnlicher Weise tatsächlich der Kartenschlüssel.
6. Wählen Sie: Ich habe Sie ausgewählt, Sie haben mich ausgewählt!
Es gibt einen Schalter in Java und MyBatis hat die Wahl.
<select id = "findActiveBlog -ähnliches" resultType = "blog"> auswählen * Aus dem Blog wob
Im obigen Beispiel: Wenn weder Titel noch Autor null sind, wählen Sie einen von zwei (der erstere wird bevorzugt). Wenn beide null sind, wählen Sie die ansonsten aus. Wenn es nur einen von Tilte und Autor gibt, der nicht null ist, wählen Sie denjenigen, der nicht null ist.
Das obige ist das Einführungs -Tutorial für MyBatis (IV) von MyBatis Dynamic SQL, das Ihnen 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!