القراءة الموصى بها:
MyBatis مقدمة تعليمي تعليمي (ط) - بداية MyBatis السريعة
ما هو SQL الديناميكي؟ ما هي وظيفة SQL الديناميكية؟
في الطريقة التقليدية لاستخدام JDBC ، أعتقد أنه عندما تجمع بين عبارات SQL المعقدة ، تحتاج إلى لصقها. إذا لم تكن حريصًا ، حتى لو كنت تفتقر إلى المساحات ، فسيؤدي ذلك إلى أخطاء. وظيفة SQL الديناميكية MyBatis هي حل هذه المشكلة. يمكن دمجها في عبارات SQL مرنة للغاية من خلال IF ، اختر ، عندما ، خلاف ذلك ، تقليم ، حيث ، تعيين علامات ، وبالتالي تحسين كفاءة المطورين.
دعونا نختبر سحر MyBatis Dynamic SQL:
1. إذا: يمكنك الحكم ، ويمكنني أن أحكم أيضًا!
كمبرمج ، من لا يفهم إذا! يمكنك أيضًا استخدام إذا في MyBatis:
<حدد ID = "FindUserById" resultType = "user"> حدد * من المستخدم حيث <if test = "id! = null"> id =#{id} </ff> و deleteflag = 0 ؛ </select>مثال أعلاه: إذا لم يكن المعرف الوارد فارغًا ، فسيقوم SQL بصق معرف = #{id}. أعتقد أن الجميع يمكنهم فهم ذلك من خلال قراءته ، ولن أقول الكثير.
سيجد الأشخاص المؤذون مشكلة: "هذا خطأ معك! إذا كان المعرف الذي تمر فيه هو NULL ، فسيصبح بيان SQL النهائي الخاص بك مختارًا * من مستخدم أين و DELETEFLAG = 0 ، فهناك مشكلة في هذا البيان!"
نعم ، في هذا الوقت ، يجب صنع علامة MyBatis بشكل كبير:
2. حيث ، معي ، SQL بيان الربط كل شيء عن الغيوم!
دعنا نعدل المثال أعلاه من خلال حيث:
<حدد ID = "FindUserById" resultType = "user"> حدد * من المستخدم حيث <here> <test = "id! = null"> id =#{id} </if> و deleteflag = 0 ؛ </where> </select>بعض الأشخاص على وشك أن يسألوا: "ماذا تفعل؟ مقارنة بما سبق ، هناك مجرد علامة إضافية!
في الواقع ، على السطح ، هناك مجرد علامة إضافية ، ولكن في جوهرها ، يتعامل MyBatis معها. عندما تواجه أو أو أو يعرف كيفية التعامل معها. في الواقع ، يمكننا تخصيص قواعد المعالجة هذه من خلال علامة القطع.
3. تقليم: أراضي ، أتخذ القرار!
ما سبق حيث يمكن التعبير عن العلامة على النحو التالي باستخدام trim:
<trim prepix = "where" prefixoverrides = "و | أو"> ... </trim>
هذا يعني: عندما يتبعه أو أو أو أو أو تتم إزالته. بالإضافة إلى المكان ، يوجد بالفعل تطبيق كلاسيكي آخر ، يتم تعيينه.
4. مجموعة: صدقوني ، لا أخطاء!
<update id = "updateUser" parametertype = "com.dy.endy.user"> تحديث مجموعة المستخدم <if test = "name! null "> id = #{id} </ff> و deleteflag = 0 ؛ </where> </uptuday>يأتي السؤال مرة أخرى: "إذا كان لدي اسم فقط ولكن ليس فارغًا ، فسيصبح SQL هذا تحديث اسم SET NAME = #{name} ، أين .........؟ الفاصلة بعد اسمك ستتسبب في خطأ!"
نعم ، في هذا الوقت ، يمكنك استخدام علامة SET التي توفرها MyBatis بالنسبة لنا. يتم تعديل ما يلي من خلال علامة المجموعة:
<update id = "updateUser" parametertype = "com.dy.endy.user"> تحديث مجموعة المستخدم <set> <test = "name! = null"> name = #{name} ، </if> <if test = "password! test = "id! = null"> id = #{id} </ff> و deleteflag = 0 ؛ </where> </uptuday>يمكن التعبير عن ذلك على النحو التالي:
<trim prefix = "set" sfaceoverrides = "،"> ... </trim>
حيث يستخدم prefixoverrides (البادئة) ، يستخدم Set Suffixoverrides (لاحقة) ، يمكنك فهمه!
5. foreach: لديك ، لدي foreach ، لا أعتقد أنه فقط أنت!
يوجد في Java ، ويمكن أن يتم حلها من أجل. وبالمثل ، هناك foreach في mybatis ، ويمكن استخدامه لتنفيذ الحلقات. بالطبع ، الكائنات المحروقة هي حاويات Java والصفائف بشكل أساسي.
<حدد ID = "selectpostin" resulttype = "domain.blog.post"> حدد *من معرف post pwhere في <foreach item = "item" index = "index" collection = "list" open = "(" deplator = "،" elut = ")تمرير مثيل قائمة أو صفيف ككائن معلمة إلى MyBatis. عند القيام بذلك ، سيقوم MyBatis بلفه تلقائيًا في خريطة واستخدام الاسم كمفتاح. سيستغرق مثيل القائمة "القائمة" كمفتاح ، وسيكون مفتاح مثيل الصفيف "صفيف". وبالمثل ، عندما يكون كائن الحلقة خريطة ، يكون الفهرس هو في الواقع مفتاح الخريطة.
6. اختر: اخترتك ، لقد اخترتني!
هناك مفتاح في Java ، و MyBatis لديه خيار.
<select id = "findavectiveBloglike" resultType = "blog"> حدد * من المدونة where state = 'active' <rection> <at test = "test!
في المثال أعلاه: عندما لا يكون العنوان ولا المؤلف لاغية ، فاختر واحدة من اثنين (السابق مفضل). إذا كان كلاهما فارغًا ، فاختر واحد خلاف ذلك. إذا كان هناك واحد فقط من tilte والمؤلف غير فارغ ، فاختر واحد ليس فارغا.
ما سبق هو التعليمي المقدمة لـ MyBatis (IV) من MyBatis Dynamic SQL المقدمة لك. آمل أن يكون ذلك مفيدًا لك. إذا كان لديك أي أسئلة ، فيرجى ترك رسالة لي وسوف يرد المحرر إليك في الوقت المناسب. شكرا جزيلا لدعمكم لموقع wulin.com!