บางทีรองเท้าเด็กจำนวนมากยังไม่ชัดเจนว่าใน mybatis สามารถใช้ภาษาสคริปต์ต่าง ๆ เพื่อกำหนด SQL แบบไดนามิกในไฟล์ Mapper; ปัจจุบัน MyBatis รองรับภาษาสคริปต์รวมถึง XML (ค่าเริ่มต้น); ความเร็วและ freemarker ใช้ภาษาสคริปต์ที่แตกต่างกันเพื่อเขียนไฟล์ Mapper ให้เสร็จสมบูรณ์ สิ่งแรกคือการใช้ภาษาสคริปต์ที่คุณคุ้นเคยและข้อที่สองคือการกำหนดคำแนะนำที่กำหนดเองมากขึ้นและหลากหลายเพื่อให้การพัฒนาของ Mapper ง่ายขึ้น เกี่ยวกับการวิเคราะห์หลักของสคริปต์สนับสนุน MyBatis จากนั้นเขียนบทความเพื่อวิเคราะห์คำแนะนำการเขียนสคริปต์ที่กำหนดเอง บทความนี้แนะนำการใช้สคริปต์ความเร็วเป็นครั้งแรกใน mybatis
โครงการ mybatis-velocity ช่วยให้คุณใช้ความเร็วเป็นภาษาสคริปต์เพื่อให้การเขียน SQL แบบไดนามิกต่างๆเสร็จสมบูรณ์ในไฟล์ Mapper
โปรดทราบว่าความเร็วถูกใช้อย่างกว้างขวางในสคริปต์ หากคุณไม่คุ้นเคยคุณสามารถตรวจสอบสคริปต์ความเร็วได้ก่อน
ติดตั้ง
เพิ่มใน maven
<การพึ่งพา> <roupId> org.mybatis.scripting </groupId> <ratifactid> mybatis-velocity </artifactid> <version> 1.2 </version>
โปรดทราบว่าเรากำลังใช้ MyBatis-Velocity เวอร์ชัน 1.2 ซึ่งต้องการการสนับสนุน MyBatis3.3
ในไฟล์กำหนดค่า mybatis ตั้งค่าเอ็นจินสคริปต์ความเร็วเป็นเอ็นจิ้นไฟล์ Mapper เริ่มต้น:
<typealiases> ... <typealias type = "org.mybatis.scripting.velocity.driver" alias = "ความเร็ว"/> </typealiases> <การตั้งค่า> ... <การตั้งค่าชื่อ = "ค่าเริ่มต้น
การกำหนดค่าเสร็จสมบูรณ์
ถัดไปคุณสามารถใช้สคริปต์ความเร็วในไฟล์ Mapper:
<select id = "findPerson" lang = "velocity"> #set ($ pattern = $ _parameter.name + '%') เลือก * จากบุคคลที่ชื่อ @{pattern, jdbcType = varchar} </select>สังเกต:
หากใช้ความเร็วพารามิเตอร์ควรอ้างอิงโดยใช้ @{} เนื่องจากคำสั่งความเร็วเริ่มต้นด้วย #เช่น #Set #if ฯลฯ
การใช้สคริปต์ความเร็วคุณยังสามารถกำหนดค่า Javatype และ JDBCType ที่เกี่ยวข้องในพารามิเตอร์ รูปแบบการกำหนดค่าคือ: @{คุณสมบัติ, attr1 = val1, attr2 = val2, ... }; รายการที่กำหนดค่าได้คือ javatype, jdbctype, โหมด, numericscale, resultmap, typehandler, jdbctypename;
ใช้ตัวแปรในบริบทในคำสั่งความเร็วและใช้ $ _Parameter เป็นข้อมูลอ้างอิงคำนำหน้าตัวอย่างเช่น
#if ($ _ parameter.name) #set ($ _ name = '%'+$ _ parameter.name+'%') และชื่อเช่น @{_ name} #endคำสั่งในตัว mybatis-velocity
นอกเหนือจากคำสั่งความเร็วแล้วโครงการ MyBatis-Vealocity ยังกำหนดคำสั่งความเร็วในตัวสำหรับ MyBatis:
ตัดแต่ง
#TRIM (คำนำหน้าคำนำหน้าคำนำ
ความหมายของพารามิเตอร์ในนั้นเหมือนกับความหมายของพารามิเตอร์การตัดแต่งใน XML;
ตัวอย่าง:
#trim ("โดยที่" "และ | หรือ")#ถ้า ($ _ parameter.name) #set ($ _ name = '%'+$ _ parameter.name+'%') และชื่อเช่น @{_ name} ที่ไหน
#where () body #end #where () เหมือนกับ <here> ใน xml คุณสามารถแทนที่และ/หรือก่อนเงื่อนไขและแทนที่ด้วยตำแหน่ง; โปรดทราบว่า /ที่ไหน () มีวงเล็บ;
mset
#mset () body #end #mset ถูกเพิ่ม m ก่อนหน้าเพื่อแยกแยะมันจาก #set directive ของความเร็วเอง #MSET เทียบเท่ากับองค์ประกอบ <et> ใน XML คุณสามารถเพิ่มคำสั่ง SET ก่อนเงื่อนไขและลบ semicolon ที่บล็อกชุดสุดท้าย;
ตัวอย่าง:
<อัปเดต id = "อัปเดต"> อัปเดตผู้ใช้ #mset () #ถ้า ($ _ parameter.name) ชื่อ =@{ชื่อ}, #end #ถ้า ($ _ parameter.age) อายุ =@{อายุ}, #end #if ($ _ parameter.borndate) borndate =@{borndate} #end #end ทำซ้ำ
#repeat (คอลเล็กชันตัวคั่นตัวคั่นปิดปิด) ร่างกาย #end #คำสั่งทำซ้ำเหมือนกับองค์ประกอบ <foreach> ใน XML สามารถสำรวจองค์ประกอบประเภทการรวบรวม/อาร์เรย์ได้อย่างง่ายดายและใช้แต่ละองค์ประกอบในนั้น:
ตัวอย่าง:
เลือก *จากเมือง #where () #repeat ($ _parameter.ids $ id "," "state_id in (" ")") @{id} #end #end ใน
#in (ฟิลด์คอลเลกชัน var) ร่างกาย #end
คำสั่ง #in เป็นคำสั่งใหม่ที่สามารถสร้างฟิลด์ที่สอดคล้องกันได้อย่างรวดเร็วในคำสั่ง () สำหรับในเงื่อนไขใน SQL; ในรายการพารามิเตอร์คอลเลกชันแสดงเนื้อหาในการสำรวจ VAR แสดงถึงชื่ออ้างอิงชั่วคราวของแต่ละวัตถุใน Traversal; ฟิลด์แสดงชื่อฟิลด์ที่สร้างขึ้นก่อนคำสั่งใน;
ตัวอย่าง:
เลือก *จากเมือง #where () #in ($ _parameter.ids $ id "state_id") @{id} #end #สิ้นสุดคำสั่งที่กำหนดเอง
MyBatis-Velocity ช่วยให้คุณปรับแต่งคำแนะนำของคุณเองเพื่อการพัฒนาที่ง่ายขึ้น ขั้นตอนของคำแนะนำที่กำหนดเองคือ:
เพิ่มไฟล์การกำหนดค่า mybatis-velocity.properties ใน classpath;
สร้างคลาส Parsing Velocity Directive ของคุณเอง
เพิ่มคลาสการแยกวิเคราะห์ Velocity Directive ที่คุณสร้างขึ้นเองในไฟล์กำหนดค่า
ใช้คำสั่งในไฟล์ mapper.xml;
ตัวอย่าง:
// ผู้ใช้กำหนด directivePackage com.myproject.directives; // คลาส Directive ที่กำหนดเองจำเป็นต้องสืบทอดคลาส Directive; คลาสสาธารณะ MyDirective ขยายคำสั่ง {} // mybatis-velocity.properties// หากมีคลาส Directive ที่กำหนดเองหลายคลาสให้แยกพวกเขาด้วยเครื่องหมายอัฒภาค userDirective = com.myproject.directives.mydirective; // mapper xml fileselect *จาก City #MyDirective () ...... #endการใช้งานที่ครอบคลุม
หากใช้ Velocity-Mybatis ผู้ทำแผนที่ crud ทั่วไปสามารถมีลักษณะเช่นนี้:
<mapper namespace = "mybatis.com._520it.mybatis.usermapper"> <resultmap type = "ผู้ใช้" id = "user_mapping"> <id column = "id" คุณสมบัติ = "id"/> <result column = "name" property = "Name"/> < column = "borndate" คุณสมบัติ = "borndate"/> <resultmap> <insert id = "เพิ่ม" keycolumn = "id" keyProperty = "id" useGeneratedKeys = "true"> แทรกลงในผู้ใช้ (@{ชื่อ, javatype = string, jdbcType = varchar},@{อายุ},@{borndate}) </แทรก> <อัปเดต id = "อัปเดต"> อัปเดตผู้ใช้ #mset () #ถ้า ($ _ parameter.name) ชื่อ =@{ชื่อ}, #end # #end #ถ้า ($ _ parameter.borndate) เกิด = @{borndate} #end #endwhere id = @{id} </update> <delete id = "delete" parameterType = "long"> ลบจากผู้ใช้ที่ id = @{id} resultmap = "user_mapping"> เลือก <รวม refid = "user_column"/> จากผู้ใช้ที่ id = @{id} </select> <select id = "list" resultmap = "user_mapping"> select <include refid = "user_column" refid = "user_column"/> จากผู้ใช้ที่ name = @{ชื่อ} </select> <select id = "queryby" resultmap = "user_mapping"> เลือก id, ชื่อ, อายุ, borndateFrom ผู้ใช้#ที่ ()#ถ้า ($ _ parameter.name) #set ($ _ name = '%' @{_ name}#end#end#ถ้า ($ _ parameter.orderby) สั่งซื้อโดย @{orderby} @{ordertype}#end#ถ้า ($ _ parameter.pagesize> -1) จำกัด @{start}, @{pagesize}ข้างต้นเป็นคำอธิบายโดยละเอียดเกี่ยวกับการสอนการใช้งานของสคริปต์ความเร็ว MyBatis ที่แนะนำโดยบรรณาธิการ (แนะนำ) ฉันหวังว่ามันจะเป็นประโยชน์กับคุณ หากคุณมีคำถามใด ๆ โปรดฝากข้อความถึงฉันและบรรณาธิการจะตอบกลับคุณทันเวลา ขอบคุณมากสำหรับการสนับสนุนเว็บไซต์ Wulin.com!