واحدة من الميزات القوية لـ MyBatis هي عادة قدرات SQL الديناميكية. إذا كان لديك خبرة في استخدام JDBC أو غيرها من الأطر المماثلة ، فأنت تفهم مدى مؤلمه في تسلسل سلاسل SQL معًا بشكل مشروط ، تأكد من عدم نسيان المساحات أو حذف الفواصل في نهاية القائمة. يمكن SQL الديناميكي التعامل مع هذا الألم تمامًا.
SQL الديناميكي
MyBatis 'Dynamic SQL يحل ألم الربط سلسلة SQL.
1. إذا
<select id = "findavectiveBlogWithTitleLike" parametertype = "blog" resultType = "blog"> حدد * من blogwhere state = 'active' <test = "title! = null"> وعنوان مثل #{title} </if> </select> ستوفر هذه الجملة وظيفة بحث نصية اختيارية. إذا لم يتم تمرير أي عنوان ، فسيتم إرجاع جميع المدونات المنشطة.
إذا تم تمرير العنوان ، فسيتم العثور على العنوان المماثل.
2. اختر ، عندما ، خلاف ذلك
<select id = "findavectiveBloglike" parametertype = "blog" resulttype = "blog"> select * from blogwhere <rection> <at test = "test! 1 </romeal> </rection> </select>
ملاحظة: إذا لم يتطابق أي من الشروط المذكورة أعلاه ، فسيصبح تحديد * من المدونة حيث
إذا كانت هناك مباراة ثانية فقط ، فسيصبح اختيار * من المدونة حيث وعنوان مثل Somelike
من الواضح أن هذا سيفشل في الاستعلام. لحل هذه المشكلة ، يوفر MyBatis حلاً.
<select id = "findavectiveBloglike" parametertype = "blog" resulttype = "blog"> select * from blogwhere <trim prefix = "where" precioverRides = "و" أو "> chope> <at test =" test!> legh = "null"> and title like #{in title} </an> in "test =" null! #{uptor.name} </hen> <rollord> و simired = 1 </rolly> </search> </rim> </rection>يتم تجاوز خاصية Overrides مع فاصل نص الأنابيب ، والمساحة الفارغة مهمة هنا. والنتيجة هي إزالة المحتوى المحدد في التجاوزات في النص الداخلي.
3. مجموعة
<update id = "updateauthorifnecessary" parametertype = "defuls"> تحديث المؤلف <set> <use test = "username! = null"> username =#{username} ، <////if test> <sured = "password! id =#{id} </uptudle>نفس المشكلة على النحو الوارد أعلاه ، بعد التحسين:
<update id = "updateauthorifnecessary" parametertype = "defulle"> تحديث المؤلف <trim prepix = "حيث" prefixOverRides = "،"> <set> <est test = "username! = null"> username =#{username} ، </if> if test = "null! NULL "> email =#{email} </if> </st> حيث id =#{id} </rim> </uptudle>ما سبق هو مشكلة الربط الديناميكي MyBatis لسلاسل SQL التي قدمها لك المحرر. آمل أن يكون ذلك مفيدًا لك. إذا كان لديك أي أسئلة ، فيرجى ترك رسالة لي وسوف يرد المحرر إليك في الوقت المناسب. شكرا جزيلا لدعمكم لموقع wulin.com!