แนะนำการอ่าน:
mybatis บทนำการเรียนรู้การเรียนรู้ (i) - mybatis เริ่มต้นอย่างรวดเร็ว
Dynamic SQL คืออะไร? ฟังก์ชั่นของ Dynamic SQL คืออะไร?
ในวิธีดั้งเดิมของการใช้ JDBC ฉันเชื่อว่าเมื่อคุณรวมคำสั่ง SQL ที่ซับซ้อนคุณต้องประกบกัน หากคุณไม่ระวังแม้ว่าคุณจะขาดช่องว่างก็จะนำไปสู่ข้อผิดพลาด ฟังก์ชั่น SQL แบบไดนามิกของ MyBatis คือการแก้ปัญหานี้ มันสามารถรวมกันเป็นคำสั่ง SQL ที่ยืดหยุ่นมากผ่าน IF, เลือก, เมื่อใด, มิฉะนั้น, การตัดแต่ง, ที่ไหน, ตั้ง, แท็ก foreach, ดังนั้นจึงปรับปรุงประสิทธิภาพของนักพัฒนา
มาสัมผัสเสน่ห์ของ MyBatis Dynamic SQL:
1. ถ้า: คุณสามารถตัดสินได้และฉันก็สามารถตัดสินได้เช่นกัน!
ในฐานะโปรแกรมเมอร์ใครไม่เข้าใจว่า! คุณสามารถใช้ถ้าใน mybatis:
<select id = "findUserById" resultType = "ผู้ใช้"> เลือก * จากผู้ใช้ที่ <ถ้า test = "id! = null"> id =#{id} </if> และ deleteFlag = 0; </select>ตัวอย่างข้างต้น: หาก ID ขาเข้าไม่ว่างเปล่า SQL จะ splice id = #{id} ฉันเชื่อว่าทุกคนสามารถเข้าใจสิ่งนี้ได้โดยการอ่านมันและฉันจะไม่พูดอะไรมากมาย
ผู้คนอย่างระมัดระวังจะพบปัญหา: "นี่เป็นสิ่งที่ผิดกับคุณ! หาก ID ที่คุณส่งผ่านเป็นโมฆะคำสั่ง SQL สุดท้ายของคุณจะกลายเป็นเลือก * จากผู้ใช้ที่และ deleeteflag = 0 มีปัญหากับคำสั่งนี้!"
ใช่ในเวลานี้แท็กของ mybatis ควรทำอย่างยิ่ง:
2. ที่ไหนกับฉันเงื่อนไขการประกบกันของ SQL นั้นเกี่ยวกับเมฆ!
มาแก้ไขตัวอย่างข้างต้นผ่านที่ไหน:
<select id = "findUserById" resultType = "ผู้ใช้"> เลือก * จากผู้ใช้ที่ <โดยที่> <ถ้า test = "id! = null"> id =#{id} </if> และ deleteflag = 0; </where> </select>บางคนกำลังจะถาม: "คุณกำลังทำอะไรอยู่เมื่อเทียบกับข้างต้นมีเพียงพิเศษที่แท็ก! สิ่งนี้จะยังคงปรากฏ * จากผู้ใช้ที่ไหนและ deleteflag = 0?"
อันที่จริงบนพื้นผิวมีเพียงพิเศษที่แท็ก แต่ในสาระสำคัญ MyBatis เกี่ยวข้องกับมัน เมื่อมันพบและหรือหรือหรือรู้วิธีจัดการกับมัน ในความเป็นจริงเราสามารถปรับแต่งกฎการประมวลผลนี้ผ่านแท็กตัดแต่ง
3. Trim: ดินแดนของฉันฉันตัดสินใจ!
ด้านบนที่สามารถแสดงแท็กได้ดังนี้โดยใช้ TRIM:
<trim prefix = "where" prefixoverrides = "และ | หรือ"> ... </trim>
มันหมายถึง: เมื่อใดตามด้วยและหรือหรือหรือหรือหรือหรือถูกลบออก นอกเหนือจากที่แล้วยังมีการใช้งานคลาสสิกอีกอย่างหนึ่งที่ตั้งไว้
4. Set: เชื่อฉันไม่มีความผิดพลาด!
<update id = "updateUser" parameterType = "com.dy.entity.user"> อัปเดตชุดผู้ใช้ <ถ้าทดสอบ = "ชื่อ! = null"> name = #{ชื่อ}, </ถ้า> <ถ้าทดสอบ = "รหัสผ่าน! null "> id = #{id} </if> และ deleteflag = 0; </where> </update>คำถามมาอีกครั้ง: "ถ้าฉันมีชื่อ แต่ไม่ใช่ NULL แล้ว SQL นี้จะกลายเป็น SET SET NAME = #{ชื่อ} ที่ไหน ......... ? เครื่องหมายจุลภาคหลังจากชื่อของคุณจะทำให้เกิดข้อผิดพลาด!"
ใช่ในเวลานี้คุณสามารถใช้แท็กชุดที่จัดทำโดย mybatis สำหรับเรา ต่อไปนี้ได้รับการแก้ไขผ่านแท็กชุด:
<update id = "updateUser" parameterType = "com.dy.entity.user"> อัปเดตชุดผู้ใช้ <et> <ถ้าทดสอบ = "ชื่อ! = null"> name = #{ชื่อ}, </ถ้า> <ถ้าทดสอบ = "รหัสผ่าน! test = "id! = null"> id = #{id} </if> และ deleteflag = 0; </where> </update>สิ่งนี้สามารถแสดงเป็น:
<trim prefix = "set" suffixoverrides = ","> ... </trim>
ที่ใช้ prefixoverrides (คำนำหน้า) ตั้งค่าใช้งาน SuffixOverrides (คำต่อท้าย) คุณสามารถเข้าใจได้!
5. Foreach: คุณมีฉันมี foreach อย่าคิดว่ามันเป็นแค่คุณ!
มีไว้สำหรับในชวาและสามารถวนรอบได้ ในทำนองเดียวกันมี foreach ใน mybatis และสามารถใช้ในการใช้ลูป แน่นอนว่าวัตถุที่วนรอบส่วนใหญ่เป็นภาชนะและอาร์เรย์ Java
<select id = "selectpostin" resultType = "domain.blog.post"> เลือก *จากโพสต์ pwhere id ใน <foreach item = "item" index = "index" collection = "list" open = "(" separator = "close =") ">#{item}ผ่านรายการอินสแตนซ์หรืออาร์เรย์เป็นวัตถุพารามิเตอร์ไปยัง mybatis เมื่อทำเช่นนั้น MyBatis จะห่อมันไว้ในแผนที่โดยอัตโนมัติและใช้ชื่อเป็นคีย์ อินสแตนซ์รายการจะใช้ "รายการ" เป็นคีย์และคีย์ของอินสแตนซ์อาร์เรย์จะเป็น "อาร์เรย์" ในทำนองเดียวกันเมื่อวัตถุลูปเป็นแผนที่ดัชนีเป็นคีย์แผนที่จริง
6. เลือก: ฉันเลือกคุณคุณเลือกฉัน!
มีสวิตช์ใน Java และ MyBatis มีทางเลือก
<select id = "findActiveBloglike" resultType = "blog"> เลือก * จากบล็อกโดยที่ state = 'active' <เลือก> <เมื่อ test = "title! = null"> และชื่อเช่น #} title} </เมื่อ> <when test = "ผู้เขียน!
ในตัวอย่างข้างต้น: เมื่อไม่มีชื่อหรือผู้แต่งเป็นโมฆะจากนั้นเลือกหนึ่งในสอง (ที่ต้องการในอดีต) หากทั้งคู่เป็นโมฆะให้เลือกอย่างอื่น หากมีเพียงหนึ่งใน tilte และผู้แต่งที่ไม่ได้เป็นโมฆะให้เลือกอันที่ไม่เป็นโมฆะ
ข้างต้นเป็นบทแนะนำบทแนะนำสำหรับ mybatis (iv) ของ Mybatis Dynamic SQL แนะนำให้คุณรู้จัก ฉันหวังว่ามันจะเป็นประโยชน์กับคุณ หากคุณมีคำถามใด ๆ โปรดฝากข้อความถึงฉันและบรรณาธิการจะตอบกลับคุณทันเวลา ขอบคุณมากสำหรับการสนับสนุนเว็บไซต์ Wulin.com!