หนึ่งในคุณสมบัติที่ทรงพลังของ mybatis มักจะเป็นความสามารถของ SQL แบบไดนามิก หากคุณมีประสบการณ์ในการใช้ JDBC หรือเฟรมเวิร์กอื่น ๆ ที่คล้ายกันคุณเข้าใจว่ามันเจ็บปวดแค่ไหนที่จะเชื่อมโยงสตริง SQL เข้าด้วยกันอย่างมีเงื่อนไขตรวจสอบให้แน่ใจว่าคุณไม่สามารถลืมช่องว่างหรือไม่ออกเครื่องหมายจุลภาคในตอนท้ายของรายการ SQL แบบไดนามิกสามารถจัดการกับความเจ็บปวดนี้ได้อย่างละเอียด
SQL แบบไดนามิก
SQL แบบไดนามิกของ MyBatis แก้ปัญหาความเจ็บปวดของการประกบสตริง SQL
1. ถ้า
<select id = "FindActiveBlogWithTitLeLike" พารามิเตอร์ ณ เวลา = "blog" resultType = "บล็อก"> เลือก * จาก blogwhere state = 'active' <ถ้า test = "title! = null"> และชื่อเช่น #{title} </if> </select> ประโยคนี้จะให้ฟังก์ชั่นการค้นหาข้อความเสริม หากไม่มีการส่งชื่อมาแล้วบล็อกที่เปิดใช้งานทั้งหมดจะถูกส่งคืน
หากมีการผ่านชื่อชื่อจะพบชื่อที่คล้ายกัน
2. เลือกเมื่อมิฉะนั้น
<select id = "FindActiveBloglike" parameterType = "blog" resultType = "blog"> เลือก * จาก blogwhere <celect> <เมื่อ test = "title! = null"> และชื่อเช่น #{title} </เมื่อ> <เมื่อทดสอบ = "ผู้เขียน! 1 </อย่างอื่น> </เลือก> </select> หมายเหตุ: หากไม่มีเงื่อนไขข้างต้นตรงกับมันจะกลายเป็นเลือก * จากบล็อกที่
หากมีเพียงนัดที่สองมันจะกลายเป็นเลือก * จากบล็อกที่และชื่อเช่น somelike
เห็นได้ชัดว่าสิ่งนี้จะล้มเหลวในการสืบค้น เพื่อแก้ปัญหานี้ MyBatis ให้ทางออก
<select id = "FindActiveBloglike" parameterType = "blog" resultType = "blog"> เลือก * จากบล็อกที่ใดที่ <trim prefix = "โดยที่" prefixoverrides = "และ | หรือ"> <เลือก> <เมื่อทดสอบ = "ชื่อ! = null"> และชื่อ #{Author.Name} </เมื่อ> <ELTHER> และ FIARTURED = 1 </อื่น ๆคุณสมบัติ Overrides ถูกแทนที่ด้วยตัวคั่นข้อความท่อและพื้นที่ว่างมีความสำคัญที่นี่ ผลลัพธ์คือการลบเนื้อหาที่ระบุในการแทนที่ในข้อความใน
3. ตั้งค่า
<update id = "updateAuthorifnEcedAs" parameterType = "ผู้เขียน"> UPDATE AUTUVLE <Set> <ถ้า test = "ชื่อผู้ใช้! = null"> username =#{ชื่อผู้ใช้}, </if> <ถ้า test = "รหัสผ่าน! = null">#{รหัสผ่าน { id =#{id} </update>ปัญหาเดียวกันกับข้างต้นหลังจากการเพิ่มประสิทธิภาพ:
<update id = "updateAuthorifnEcedAs" parameterType = "ผู้แต่ง"> UPDATE AUTUVLE <trim prefix = "ที่" prefixOverrides = ",", "> <et> <ถ้าทดสอบ =" ชื่อผู้ใช้! null "> email =#{email} </if> </set> โดยที่ id =#{id} </trim> </update>ข้างต้นเป็นปัญหาของการประกบแบบไดนามิกของ MyBatis ของสตริง SQL ที่แนะนำโดยบรรณาธิการ ฉันหวังว่ามันจะเป็นประโยชน์กับคุณ หากคุณมีคำถามใด ๆ โปรดฝากข้อความถึงฉันและบรรณาธิการจะตอบกลับคุณทันเวลา ขอบคุณมากสำหรับการสนับสนุนเว็บไซต์ Wulin.com!