Dynamisches SQL ist die dynamische Erzeugung von SQL.
Wenn Tag
Angenommen, es gibt eine Anforderung: Wenn der Benutzer abfragt, benötigen wir, wenn der Benutzername nicht "admin" entspricht, auch ein Kennwort von 123456.
Die Daten in der Datenbank sind:
Mybatisconfig.xml
<? -> <typealiases> <typealias type = "jike.book.pojo.jikeUser" alias = "jikeuser"/> <typealias type = "jike.book.pojo.Author" alias = "Autor"/> </typealias> <Environments Development = "Development"> <Environment Id = "Development"> < type = "jdbc"> </transactionManager> <dataSource type = "Pooled"> <Eigenschaft name = "treibe" value = "com.mysql.jdbc.driver value = "****"/> </dataSource> </umwelt> </Umgebungen> <mapper> <mapper ressourcen = "jike/book/map/jikeuser.xml"/> </mappers> </configuration>
Jikeuser.xml
<? resultType = "jikEser" parameterType = "jikeuser"> select * from jikebook
Testklasse:
paket jike.book.test; import jike.book.pojo.jikeuser; import org.apache.ibatis.io.resources; import org.apache.ibatis.Session org.apache.ibatis.session.SqlSessionFactoryBuilder;import java.io.IOException;import java.io.Reader;import java.util.List;/*** DateTime: 2016/9/6 13:36* Function: * Idea: */public class TestSQL {public static void main(String[] args) {// resource path String ressourcen = "jike/book/map/mybatisconfig.xml"; reader reader = null; SQLSessionFactoryBuilder (). Build (Reader); Session = SQLMapper.OpenSession (); Jikeuser Jikeuser = New Jikeuser (); Jikuser.SetPassword ("123456"); LIST <JIKEUSER> userList = Select.Selectlist ("SelectSQL); {System.out.println ("Benutzername:"+user.getUnername ());} session.close ();}}Das laufende Ergebnis ist:
Wählen Sie Tag
Nehmen wir an, wir haben derzeit eine Anforderung: Fragen Sie den Benutzer ab, wenn der Benutzername nicht leer ist, fügen Sie die Bedingung des Benutzernamens hinzu. Wenn die ID nicht leer ist, fügen Sie die ID -Bedingung hinzu. Andernfalls legen Sie das Kennwort nicht leer, was eine Multiple -Choice ist.
Mybatisconfig.xml ändert sich nicht, fügen Sie hinzu:
<select id = "selectjikeSerChoose" resultType = "jikeuser" parameterType = "jikeSer"> select * von jikeuser wob null </sonst> </wählen> </select>
Testklasse: Angenommen, der Benutzername ist nicht leer:
paket jike.book.test; import jike.book.pojo.jikeuser; import org.apache.ibatis.io.resources; import org.apache.ibatis.Session org.apache.ibatis.session.SqlSessionFactoryBuilder;import java.io.IOException;import java.io.Reader;import java.util.List;/*** DateTime: 2016/9/6 13:36* Function: * Idea: */public class TestSQL {public static void main(String[] args) {// resource path String ressourcen = "jike/book/map/mybatisconfig.xml"; reader reader = null; SQLSessionFactoryBuilder (). Build (Reader); Session = SQLMapper.OpenSession (); Jikeuser Jikeuser = New Jikeuser (); Jikeuser.Setusername ("yen"); list <Jikeuser> userList = Select. {System.out.println ("Benutzername:"+user.getUnername ());} session.close ();}}Das Ergebnis ist:
Angenommen, die Bedingung des Benutzernamens ist nicht festgelegt, das heißt, kommentieren Sie Jikeuser.Setusername ("Yen");:
Wo Marker, Marker setzen
Die obige Abfrage in der Auswahl ist, dass wir nicht bestimmen können, ob und im Unterbauzustand geschrieben oder nicht, also addieren wir eine 1 = 1. Und wo wir nur beurteilen können, ob es hinzugefügt werden soll.
<select id = "selectjikeSerwhere" resultType = "jikeuser" parameterType = "jikeuser"> select * from Jikeuser <Where> <if test = "userername!
Die intelligente Zuweisung von Tag intelligent entfernen automatisch den Überschuss ",", ",", ",", ",", ",", ",", ",", ",", ",", ",", ",", ",", ",", ",", ",", ",", ",", ",", ",", ",", ",", ",", ",", ",", "
<update id = "updateJikeSerSet" parameterType = "jikeuser"> update jikeSer <set> <if test = "username!
Daten vor dem Betrieb:
arbeiten:
Betriebsergebnisse:
<update id = "updateUserTrim" parameterType = "jikeuser"> update jikeSer <trim prefix = "suffiXoverrides =", "suffix =" wob "> Passwort =#{Passwort}, </if> </trim> </update>für Each. Tag
Normalerweise für Schleifenabfrage oder Schleifenzuweisung verwendet
<select id = "selectjikeSerforeach" resultType = "jikeSer" parameterType = "list"> select * aus Jikeuser <Where> id in <foreach item = "ideen" index = "index" collection = "liste" open = "(" separator = "," close = ")prüfen:
Das obige ist eine detaillierte Erklärung der mybatis dynamischen SQL if, wählen Sie, wobei Sie, Wobei, Set, Trim und Foreach -Tag -Beispiele, die Ihnen vom Editor vorgelegt wurden. 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!