Vielleicht sind viele Kinderschuhe nicht sehr klar, dass in MyBatis verschiedene Skriptsprachen verwendet werden können, um dynamisches SQL in der Mapper -Datei zu definieren. Derzeit unterstützt MyBatis die Skriptsprachen inklusive XML (Standard); Geschwindigkeit und Freimaurer. Verwenden Sie verschiedene Skriptsprachen, um das Schreiben von Mapper -Dateien zu vervollständigen. Die erste besteht darin, die Skriptsprache zu verwenden, mit der Sie vertraut sind, und das zweite ist, mehr und reichhaltige benutzerdefinierte Anweisungen zu definieren, um die Entwicklung von Mapper zu vereinfachen. In Bezug auf die Prinzipanalyse von MyBatis unterstützt Skripte und schreiben Sie dann einen Artikel, um die benutzerdefinierten Skriptanweisungen zu analysieren. In diesem Artikel wird zunächst die Verwendung von Geschwindigkeitskripten in MyBatis eingeführt.
Mit dem MyBatis-Geschwindigkeitsprojekt können Sie die Geschwindigkeit als Skriptsprache bequem verwenden, um das Schreiben verschiedener dynamischer SQL in Mapper-Dateien zu vervollständigen.
Beachten Sie, dass die Geschwindigkeit in Skripten ausgiebig verwendet wird. Wenn Sie damit nicht vertraut sind, können Sie sich zuerst das Geschwindigkeitskript ansehen.
Installieren
Fügen Sie Maven hinzu
<Depopenty> <gruppe> org.mybatis.Scripting </Groupid> <artifactId> mybatis-velocity </artifactId> <version> 1.2 </Version> </abhängig>
Beachten Sie, dass wir MyBatis-Geschwindigkeit Version 1.2 verwenden, was MyBatis3.3-Unterstützung erfordert.
Setzen Sie in der MyBatis -Konfigurationsdatei die Geschwindigkeitsskript -Engine als Standard -Mapper -Datei -Engine fest:
<typeAliases>... <typeAlias type="org.mybatis.scripting.velocity.Driver" alias="velocity"/></typeAliases><settings>...<setting name="defaultScriptingLanguage" value="velocity"/></settings>
Die Konfiguration ist abgeschlossen.
Als nächstes können Sie das Geschwindigkeitskript in der Mapper -Datei verwenden:
<select id = "findperson" Lang = "velocity"> #set ($ muster = $ _parameter.name + '%') SELECT * Aus Person, wobei der Name @{Muster, jdbctype = varchar} </select>Beachten:
Wenn die Geschwindigkeit verwendet wird, sollten die Parameter mit @{} verwiesen werden, da die Geschwindigkeitsrichtlinie mit #wie #set #if usw.;
Mit dem Geschwindigkeitskript können Sie auch den entsprechenden Javatyp und den JDBCType in den Parametern konfigurieren. Das Konfigurationsformat lautet: @{Eigenschaft, attr1 = val1, attr2 = val2, ...}; Die konfigurierbaren Elemente sind Javatype, jdbcType, modus, numericsCale, resultmap, typeHandler, jdbcTypeName;
Verwenden Sie Variablen im Kontext in Geschwindigkeitsrichtlinien und verwenden Sie beispielsweise $ _parameter als Präfixreferenz
#if ($ _ parameter.name) #set ($ _ name = '%'+$ _ parameter.name+'%') und Name wie {_ name} #endMyBatis-Geschwindigkeitsbefehl
Zusätzlich zur Geschwindigkeitsrichtlinie definiert das MyBatis-Geschwindigkeitsprojekt einige integrierte Geschwindigkeitsrichtlinien für MyBatis:
trimmen
#TRIM (Präfixexoverrids -Suffix -Suffixexoverrides) Körper #end
Die Bedeutung der Parameter darin entspricht der Bedeutung des Trimparameters in XML;
Ein Beispiel:
#trim ("wobei" "und | oder")#if ($ _ parameter.name) #set ($ _ name = '%'+$ _ parameter.name+'%') und Name @{_ Name}#Ende#Ende#End Wo
#where () Body #End #Where () ist das gleiche wie <Where> in XML. Sie können und/oder vor dem Zustand ersetzen und durch wo ersetzt werden; Beachten Sie, dass /wo () Klammern hat;
mset
#mset () Body #End #mset wird vor ihm hinzugefügt, um es von der #set -Richtlinie der Geschwindigkeit selbst zu unterscheiden. #mset entspricht dem <Set> -Element in XML. Sie können vor dem Zustand eine festgelegte Anweisung hinzufügen und das Semikolon am letzten festgelegten Block entfernen.
Ein Beispiel:
<Update id = "update"> Aktualisieren Sie Benutzer #mset () #if ($ _ parameter.name) name = {{name}, #end #if ($ _ parameter.age) age = {ay}, #end #if ($ _ parameter.borndate) bornDate =@{{{{{{{{{{{{{{{{{{{{{} wiederholen
#Repeat (Sammlung Var Separator Open Close) Body #End #Wiederholungsanweisung ist das gleiche wie das Element <Feach> in XML. Es kann die Sammlungs-/Array -Elemente problemlos durchqueren und jedes Element verwenden:
Ein Beispiel:
Wählen Sie *aus der Stadt #where () #repeat ($ _parameter.ids $ id "," state_id in ("") ") @{id} #End #End In
#in (Sammlung var Field) Körper #end
Die #IN -Richtlinie ist eine neue Richtlinie, die das entsprechende Feld in () in SQL schnell generieren kann. In der Parameterliste repräsentiert die Sammlung den Inhalt in der in die Umfahrten; var repräsentiert den temporären Referenznamen jedes Objekts im Traversal; Das Feld repräsentiert den Feldname, der vor der In -Anweisung erzeugt wird;
Ein Beispiel:
Wählen Sie *aus der Stadt #where () #in ($ _parameter.ids $ id "state_id") @{id} #End #EndBenutzerdefinierte Befehle
Mit MyBatis-Geschwindigkeit können Sie Ihre eigenen Anweisungen bequem anpassen, um die Entwicklung zu vereinfachen. Die Schritte der benutzerdefinierten Anweisungen sind:
Fügen Sie eine Konfigurationsdatei für mybatis-velocity.Properties in den Klassenpfad hinzu.
Erstellen Sie Ihre eigene Velocity -Richtlinie an Parsen -Klasse;
Fügen Sie die Velocity -Direktive -Parsen -Klasse hinzu, die Sie selbst in die Konfigurationsdatei erstellt haben.
Verwenden Sie Direktiven in Mapper.xml -Datei;
Ein Beispiel:
// Benutzer definierte DirektivePackage com.myProject.directives; // Benutzerdefinierte Richtlinienklassen müssen Richtlinienklassen erben; Die öffentliche Klasse MyDirective erweitert die Richtlinie {} // mybatis-velocity.properties// Wenn es mehrere benutzerdefinierte Richtlinienklassen gibt, trennen Sie sie mit Semikolons; userDirective = com.myProject.directives.mydirective; // Mapper XML FileSelect *aus der Stadt #mydirective () ...... #endUmfassende Verwendung
Wenn Sie Geschwindigkeitsmybatis verwenden, kann ein typischer Crud Mapper so aussehen:
<mapper namespace = "mybatis.com._520it.mybatis.usermapper"> <resultmap type = "Benutzer" id = "user_mapping"> <id column = "id" property = "id"/> <resultal column = "name" property " column = "borndate" property = "borndate"/> <resultMap> <insert id = "add" keyColumn = "id" keyProperty = "id" useGeneratedKeys = "true"> in user (name, ay, borndate) Werte (@{name, javatype = string, jdbctype = varchar},@{{aste},@@@@@@@{| id = "update"> aktualisieren Benutzer #mset () #if ($ _ parameter.name) name =@{name}, #end #if ($ _ parameter.age) age = {ay}, #end #if ($ _ parameter.borndate) born = {{BornDate} #endways id =@{{id} </} </} </} </} </} </} </} </} </} </} </} </} </} </} </} </} </} </} </} </} </} </} </} </} </} </} </} </} </} </} </} </} </} </} </} </} </$> </$> <delete id " parameterType = "long"> vom Benutzer löschen wob resultMap = "user_mapping"> select <include refID = "user_column"/> vom Benutzer </select> <select id = "listbyName" resultMap = "user_mapping" parameterType = "String"> Select <include refid = "user_column"/> von user where name = {name} </select id ID, Name, Alter, BorndateFrom-Benutzer#wob @{start}, @{pageSize} #end </select> </makePer>Das obige ist eine detaillierte Erklärung für das Verwendungs -Tutorial der vom Herausgeber vorgestellten MyBatis -Geschwindigkeits -Skript (empfohlen). 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!