1. mybatis dynamic sql คืออะไร
เมื่อเราเห็นไดนามิกเราควรคิดว่านี่เป็นคำสั่ง SQL ที่สามารถเปลี่ยนแปลงได้
SQL แบบไดนามิกของ MyBatis ขึ้นอยู่กับการแสดงออกของ OGNL ซึ่งสามารถช่วยให้เราใช้ตรรกะบางอย่างในคำสั่ง SQL ได้อย่างง่ายดาย
2. การเตรียมการก่อนใช้ mybatis dynamic sql
. ตารางฐานข้อมูล
ข. สร้างชั้นเรียน
3. การใช้ MyBatis Dynamic SQL คุณต้องทราบค่าแอตทริบิวต์บางอย่างก่อน
1. แทรก
SELECTKEY: คำสั่ง SQL ดำเนินการก่อนหรือหลังคำสั่ง SQL
KeyColumn: ชื่อฟิลด์หรือนามแฝงที่สอดคล้องกัน
KeyProperty: ชื่อแอตทริบิวต์หรือค่าคีย์แผนที่ที่สอดคล้องกับคลาสเอนทิตี
คำสั่งซื้อ: ดำเนินการก่อนหรือหลังคำสั่งดำเนินการ
ResultType: ประเภทของผลการส่งคืน
วิธีแรก: การแทรก SQL แบบไดนามิกที่ง่ายที่สุด
แทรกลงในค่าหลักสูตร (seq_course.nextval,#{coursecode},#{coursename}) เลือก max (id) currid จากหลักสูตรทดสอบ
ผลการทดสอบ
วิธีที่สอง: ถ้าฉันไม่ต้องการแทรกฟิลด์มากมายและฉันไม่ต้องการแทรกฟิลด์ Coursename ดังนั้นวิธีแรกก็เป็นไปไม่ได้อย่างแน่นอน
แทรกลงในหลักสูตร (ID, CourSecode, CoursEname) ค่า (seq_course.nextval,#{coursecode},#{coursename})การทดสอบและผลลัพธ์
จากนี้เราจะเห็นได้ว่าวิธีนี้สามารถทำได้เมื่อฉันไม่ต้องการแทรกฟิลด์ CourSecode
ตอนนี้ชื่ออยู่ที่นี่อีกครั้ง จะเกิดอะไรขึ้นถ้าเราต้องการเปลี่ยนฟิลด์สุดท้ายให้ว่างเปล่าหรือทั้งสองฟิลด์เป็นว่างเปล่า
ฟิลด์สุดท้ายจะว่างเปล่า
ดูเหมือนว่าจะมีเครื่องหมายจุลภาคที่อยู่เบื้องหลังเครื่องหมายคำถามแรกบนคอนโซล
ลองทั้งสองฟิลด์กลายเป็นว่างเปล่า
ยังมีเครื่องหมายจุลภาค
เหตุผลสำหรับสถานการณ์ข้างต้นคือเมื่อเราไม่ต้องการแทรกสนามเราไม่ได้ลบเครื่องหมายจุลภาค ตอนนี้เราแนะนำวิธีที่สาม
วิธีที่สามคือการลบเครื่องหมายจุลภาคส่วนเกิน
วิธีนี้ต้องแนะนำการตัดแต่ง
Trim ยังมีคุณสมบัติหลายอย่าง
คำนำหน้า: เพิ่มคำนำหน้า
คำนำหน้า: แทนที่คำนำหน้า
คำต่อท้าย: เพิ่มคำต่อท้าย
SuffixOverrides: แทนที่คำต่อท้าย
ID, CourSecode, Coursenameseq_Course.nextVal,#{CourSecode},#{CoursEname}ดูแล้วปัญหาได้รับการแก้ไขแล้ว
เมื่อทำงานในโครงการเรามักจะแทรกข้อมูลลงในฐานข้อมูล บางครั้งเราต้องการแทรกหลายชิ้นในเวลาเดียวกัน ดังนั้นเราควรแทรกข้อมูลหลายชิ้นโดยใช้ mybatis ได้อย่างไร
ที่นี่เราต้องแก้ปัญหาหลายอย่าง
1. เราจะคัดลอกโครงสร้างตารางได้อย่างไร
สร้างตารางแน่นอน 02 เป็นเลือก * จากหลักสูตร
ข้อความนี้คุ้นเคยมากหรือไม่? ใช่ตารางหลักสูตร 02 ไม่เพียง แต่คัดลอกโครงสร้างตารางของตารางหลักสูตร แต่ยังคัดลอกเนื้อหาของตารางหลักสูตรด้วย
2. เราจะคัดลอกเฉพาะโครงสร้างตารางหลักสูตรแทนเนื้อหาตารางหลักสูตรได้อย่างไร
สร้างตารางแน่นอน 03 เป็นเลือก * จากหลักสูตรที่ 1! = 1;
3. ดังนั้นเมื่อแทรกมันก็เหมือนกับนี้หรือไม่?
แทรกลงในหลักสูตร 03 เลือก * จากหลักสูตร;
คำตอบก็เหมือนกัน
4. วิธีการแทรกหลายข้อความ
แทรกลงในหลักสูตร 03Select '6', 'yc06', 'โครงสร้างข้อมูล 06' จากคู่ unionesectelect '7', 'yc07', 'โครงสร้างข้อมูล 07' จาก dual unioneselect '8', 'yc08', 'โครงสร้างข้อมูล 08'
ตอนนี้คำสั่ง SQL พร้อมใช้งานแล้วเราสามารถแทรกไว้ในไฟล์กำหนดค่า
แทรกลงใน courseselect#{courses.id},#{courses.coursecode},#{courses.coursename} จากคู่2. แก้ไข
1. ใช้การตกแต่ง ดังที่ได้กล่าวไว้ก่อนหน้านี้คุณสามารถใช้ Trim to defix เนื่องจากแอตทริบิวต์ SuffixOverrides
อัปเดตหลักสูตร SetCourSecode =#{CourSeCode}, coursename =#{coursename} โดยที่ id =#{id}2. ใช้ชุดซึ่งสามารถแทนที่ชุดในคำสั่งและลบคำต่อท้าย
อัปเดต coursecourSecode =#{coursecode}, coursename =#{coursename} โดยที่ id =#{id}3. เมื่อแก้ไขเราจะทำการเปลี่ยนแปลงที่เลือก บางครั้งเราไม่ต้องการปรับเปลี่ยนค่าเพื่อให้สอดคล้องกับค่าโดยไม่ต้องแก้ไข
เลือกเทียบเท่ากับหลาย ๆ
อันแรกเทียบเท่ากับถ้าและอันที่สองเทียบเท่ากับอื่นถ้า
มิฉะนั้นเท่ากับอื่น ๆ
อัปเดต CourSecourSecode =#{CourSeCode}, courSeCode = CourSeCode, courSename =#{CourSename}, CourSename = CourSename, โดยที่ id =#{id}ข้างต้นเป็นเนื้อหาทั้งหมดของ MyBatis Dynamic SQL ที่แนะนำให้คุณรู้จัก ฉันหวังว่ามันจะเป็นประโยชน์กับทุกคน!