MyBatis هو إطار طبقة استمرار ممتازة يدعم استعلامات SQL العادية والإجراءات المخزنة ورسم الخرائط المتقدمة. يقوم MyBatis بإلغاء الإعدادات اليدوية لجميع كود JDBC تقريبًا والمعلمات وتغليف البحث في مجموعة النتائج. يمكن لـ MyBatis استخدام XML البسيط أو التعليقات التوضيحية للتكوين والتعيين الأصلي ، ورسم الخرائط وواجهات Java (كائنات Java القديمة) في سجلات في قاعدة البيانات.
الآن بعد أن أصبح Mybatis أكثر شيوعًا ، يعرف الجميع مزاياه ، لذلك لن أقول الكثير ، فقط أتحدث عن النقاط الرئيسية.
يوفر MyBatis وظائف SQL ديناميكية. يمكننا استخدام <if> <عندما> <حيث> <rolly> <foreach> وهكذا ، حتى نتمكن من كتابة SQL الديناميكي الذي تم إنشاؤه وفقًا للشروط. ومع ذلك ، في الوسط ، هناك سوء فهم صغير للعلامة <if> التي نستخدمها غالبًا ، والتي ستنخفض إذا قمنا بطريق الخطأ. اسمحوا لي أن أعطيك مثالا طبيعيا:
<select id = "findavectiveBlogWithTitleLike" parametertype = "blog" resultType = "blog"> حدد * من المدونة where state = 'active' <test = "title! = null"> وعنوان مثل #{title} </if> </select>في المثال أعلاه ، عندما لا يكون العنوان مساوياً للخلفية ، سيتم تقطيع الشروط الواردة في علامة <f> ، بحيث تكون عبارة SQL ديناميكية.
ولكن عندما نحكم على جميع الشروط ، هل تكتب بهذه الطريقة:
<select id = "findavectiveBlogWithTitLellelike" parametertype = "blog" resultType = "blog"> SELECT * من المدونة حيث <test = "userId! = null"> state = 'active' </fric> <test = "title!
لا مشكلة ، أليس كذلك؟ على الأقل ، إنه جيد من الناحية النحوية ، على الأقل يمكن أن يولد SQL بشكل طبيعي.
ومع ذلك ، لا أعرف ما إذا كنت قد لاحظت أنه عندما تكون جميع الظروف لاغية ، ماذا يحدث؟
حدد * من المدونة حيث
هل رأيته؟ هل يمكن تنفيذ مثل هذا SQL بنجاح؟
الجواب بالطبع لا.
إذن ماذا علي أن أفعل؟ ثم تذكر أنه عندما تكتب SQL الديناميكي ، فكر أولاً فيما إذا كانت جميع الشروط ستحدث إذا كانت جميع الظروف غير صحيحة ، وما إذا كان سيكون هناك فقط واحدة ولكن لا توجد شروط. ثم كل ما عليك فعله هو إضافة علامة <here> للف جميع الشروط.
<ed select id = "findactiveBlogWithTitleLike" parametertype = "blog" resultType = "blog"> حدد * من المدونة <where> <test = "userId! = null"> state> '</if> <test = "title!
وبهذه الطريقة ، عندما لا تكون جميع الظروف صحيحة ، حيث لن يتم توضيحها.
في هذا الوقت ، اكتشف الصديق الذكي أنه إذا لم يكن الشرط الأول صحيحًا والشرط الثاني صحيح ، فهل سيصبح SQL هكذا؟
حدد * من المدونة التي عنوانها مثل #{title}لا تقلق ، عند استخدام علامة <if> لتطويق الظروف ، سيتم إزالتها تلقائيًا و.
ما سبق هو فخ صغير لاستخدام علامات SQL الديناميكية من قبل المحرر لتقديمها لك من قبل MyBatis. آمل أن يكون ذلك مفيدًا لك. إذا كان لديك أي أسئلة ، فيرجى ترك رسالة لي وسوف يرد المحرر إليك في الوقت المناسب. شكرا جزيلا لدعمكم لموقع wulin.com!