Dynamic SQL هو الجيل الديناميكي من SQL.
إذا كانت العلامة
لنفترض أن هناك شرطًا: عند الاستعلام عن المستخدم ، عندما لا يساوي اسم المستخدم "المسؤول" ، نحتاج أيضًا إلى كلمة مرور 123456.
البيانات الموجودة في قاعدة البيانات هي:
mybatisconfig.xml
<؟ -> <TypeAliases> <typealias type = "jike.book.pojo.jikeuser" alias = "jikeuser"/> <typealias type = "jike.book.pojo.author" alias = "upult"/> </tarialiases> <البيئات default = development "> type = "jdbc"> </stallctactionManager> <dataSource type = "prouded"> <property name = "driver" value = "com.mysql.jdbc.driver"/> <property name = "url" value = "jdbc: mysql: // localhost: 3306/jikebook/> value = "****"/> </dataSource> </eversity> </eversionments> <mappers> <mapper Resource = "Jike/Book/Map/Jikeuser.xml"/> </nedbers> </uccurns>
jikeuser.xml
<؟ resultType = "jikeuser" parametertype = "jikeuser"> حدد * من jikebook.jikeuserwhere 1 = 1 <if test = "username! = 'admin'"> و password =#{password} </if> </select> </mapper>فئة الاختبار:
package jike.book.test ؛ import jike.book.pojo.jikeuser ؛ import org.apache.ibatis.io.resources ؛ import org.apache.ibatis.session.sqlsession ؛ import org.apache.ibatis.session.sqlsessionfactory ؛ org.apache.ibatis.session.sqlsessionfactorybuilder ؛ استيراد java.io.ioException ؛ استيراد java.io.reader ؛ استيراد java.util.list ؛/*** dateTime: 2016/9/6 13: 36* الوظيفة: الفكرة: Resource = "jike/book/map/mybatisconfig.xml" ؛ reader reader = null ؛ sqlsession session ؛ try {reader = resources.getResourCeasreader (Resource) ؛ sqlsessionfactorybuilder (). build (reader) ؛ session = sqlmapper.opensession () ؛ Jikeuser Jikeuser = New Jikeuser () ؛ {system.out.println ("username:"+user.getusername ()) ؛} session.close () ؛}}النتيجة الجارية هي:
اختر العلامة
لنفترض أن لدينا حاليًا شرطًا: استعن للمستخدم ، إذا لم يكن اسم المستخدم فارغًا ، فأضف شرط اسم المستخدم ، إذا لم يكن المعرف فارغًا ، فأضف شرط المعرف ، وإلا ، قم بتعيين كلمة المرور غير فارغة ، وهو خيار متعدد.
MyBatisconfig.xml لا يتغير ، أضف:
<select id = "selectJikeUserChoose" resultType = "jikeuser" parametertype = "jikeuser"> select * from jikeuser حيث 1 = 1 <srect> <w test = "username! = null"> و username مثل #{username} NULL </romeal> </search> </select>فئة الاختبار: افترض أن اسم المستخدم ليس فارغًا:
package jike.book.test ؛ import jike.book.pojo.jikeuser ؛ import org.apache.ibatis.io.resources ؛ import org.apache.ibatis.session.sqlsession ؛ import org.apache.ibatis.session.sqlsessionfactory ؛ org.apache.ibatis.session.sqlsessionfactorybuilder ؛ استيراد java.io.ioException ؛ استيراد java.io.reader ؛ استيراد java.util.list ؛/*** dateTime: 2016/9/6 13: 36* الوظيفة: الفكرة: Resource = "jike/book/map/mybatisconfig.xml" ؛ reader reader = null ؛ sqlsession session ؛ try {reader = resources.getResourCeasreader (Resource) ؛ sqlsessionfactorybuilder (). build (reader) ؛ session = sqlmapper.opensession () ؛ Jikeuser Jikeuser = New Jikeuser () ؛ {system.out.println ("username:"+user.getusername ()) ؛} session.close () ؛}}النتيجة هي:
على افتراض أن حالة اسم المستخدم لم يتم تعيينها ، أي التعليق على jikeuser.setusername ("ين") ؛:
حيث علامة ، تعيين علامة
الاستعلام أعلاه في الاختيار هو أننا لا نستطيع تحديد ما إذا كان في حالة الاتصال الفرعي مكتوبة أم لا ، لذلك نضيف 1 = 1. وحيث يمكننا فقط الحكم على ما إذا كان ينبغي إضافته.
<SELECT ID = "selectJikeUserwhere" resultType = "jikeuser" parametertype = "jikeuser"> SELECT * من jikeuser <Where> <test = "username! = null"> و username like #{username} </fortستزيل التعيين الذكي Set Tag تلقائيًا "،" ، "،" ، "
<update id = "updateJikeUserset" parametertype = "jikeuser"> تحديث jikeuser <set> <test = "username! = null"> username =#{username} ، <//ide> </update> </"profort!البيانات قبل العملية:
التشغيل:
نتائج العملية:
<update id = "updateUsertrim" parametertype = "jikeuser"> تحديث jikeuser <trim prefix = "set" suffixoverrides = "،" luckix = "where id = #id}"> <username = "username! = null and username! = '' "> password =#{password} ، </if> </rim> </uptudle>foreach علامة
عادة ما تستخدم لاستفسار حلقة أو مهمة حلقة
<حدد ID = "selectJikeUserForeach" resultType = "jikeuser" parametertype = "list"> select * from jikeuser <Where> id in <foreach item = "item" index = "index" collection = "list>
امتحان:
ما سبق هو شرح مفصل لـ MyBatis Dynamic SQL إذا ، اختر ، حيث ، أمثلة ، تقليم ، وعلامة فورتش التي قدمها لك المحرر. آمل أن يكون ذلك مفيدًا لك. إذا كان لديك أي أسئلة ، فالرجاء ترك رسالة لي وسوف يرد المحرر لك في الوقت المناسب. شكرا جزيلا لدعمكم لموقع wulin.com!