คำนำ
โครงการส่วนใหญ่ใช้ mybatis แต่บาง บริษัท ใช้ไฮเบอร์เนต คุณสมบัติที่ใหญ่ที่สุดของการใช้ mybatis คือต้องเขียน SQL ด้วยตัวเองและการเขียน SQL ต้องผ่านพารามิเตอร์หลายตัว การเผชิญกับสถานการณ์ทางธุรกิจที่ซับซ้อนต่าง ๆ การผ่านพารามิเตอร์ก็เป็นความรู้เช่นกัน
ด้านล่างเราสรุปวิธีการส่งสัญญาณหลายพารามิเตอร์ต่อไปนี้
วิธีที่ 1: วิธีการถ่ายโอนพารามิเตอร์ตามลำดับ
ตัวเลขใน #{} แสดงลำดับที่คุณผ่านพารามิเตอร์
วิธีการนี้ไม่แนะนำให้ใช้นิพจน์เลเยอร์ SQL ไม่ได้ใช้งานง่ายและข้อผิดพลาดมีแนวโน้มที่จะเกิดขึ้นเมื่อมีการปรับคำสั่งซื้อ
วิธีที่ 2: @param คำอธิบายประกอบการผ่านพารามิเตอร์
ชื่อใน #{} สอดคล้องกับชื่อที่แก้ไขในคำอธิบายประกอบ @param brackets
วิธีนี้ค่อนข้างใช้งานง่ายเมื่อมีพารามิเตอร์ไม่มากนักดังนั้นจึงแนะนำให้ใช้
วิธีที่ 3: วิธีการถ่ายโอนพารามิเตอร์แผนที่
ชื่อใน #{} สอดคล้องกับชื่อคีย์ในแผนที่
วิธีนี้เหมาะสำหรับการผ่านพารามิเตอร์หลายตัวและพารามิเตอร์มีความผันผวนและสามารถส่งได้อย่างยืดหยุ่น
วิธีที่ 4: วิธีการถ่ายโอนพารามิเตอร์ Java Bean
ชื่อใน #{} สอดคล้องกับแอตทริบิวต์สมาชิกในคลาสผู้ใช้
วิธีนี้ใช้งานง่ายมาก แต่ต้องสร้างคลาสเอนทิตี มันไม่ใช่เรื่องง่ายที่จะขยาย มันต้องมีการเพิ่มแอตทริบิวต์ที่จะใช้ตามสถานการณ์
วิธีการผ่านพารามิเตอร์เมื่อใช้อินเทอร์เฟซ Mapper
เมื่อ MyBatis ใช้อินเทอร์เฟซ Mapper สำหรับการเขียนโปรแกรมเลเยอร์พื้นฐานจะใช้กลไกพร็อกซีแบบไดนามิกซึ่งเรียกว่าบนพื้นผิว แต่ในความเป็นจริงมันผ่านวิธีการที่สอดคล้องกันของ SQLSession ที่เรียกโดยพร็อกซีแบบไดนามิกเช่น SelectOne () เพื่อนที่สนใจสามารถตรวจสอบวิธีการ getMapper () ของค่าเริ่มต้น qlsession ซึ่งในที่สุดจะได้รับวัตถุ mapperproxy ที่ proxys อินเทอร์เฟซ Mapper เมื่อวัตถุ mapperproxy เรียกใช้วิธีการแม็ปเปอร์อินเตอร์เฟสมันจะแปลงพารามิเตอร์ที่ผ่านแล้วจากนั้นใช้พารามิเตอร์ที่แปลงเป็นพารามิเตอร์เพื่อเรียกใช้วิธีการทำงานที่สอดคล้องกับ SQLSession (เช่น SelectOne, แทรก ฯลฯ ) กระบวนการแปลงสามารถใช้งานได้โดยอ้างอิงถึงวิธีการ execute () ของ mapermethod เพียงแค่ใส่กฎต่อไปนี้:
1. หากการส่งผ่านผ่านเป็นพารามิเตอร์เดียวและไม่ได้ตั้งชื่อด้วยคำอธิบายประกอบ @param วิธีการที่สอดคล้องกันของ SQLSession จะเรียกโดยตรงกับพารามิเตอร์เดียวเป็นพารามิเตอร์จริง
2. หากการส่งผ่านไม่ใช่พารามิเตอร์เดียวหรือมีพารามิเตอร์ที่มีชื่อด้วยคำอธิบายประกอบ @Param พารามิเตอร์ที่เกี่ยวข้องจะถูกแปลงเป็นแผนที่สำหรับการผ่าน กฎเฉพาะมีดังนี้:
2.1. พารามิเตอร์ที่เกี่ยวข้องจะถูกเก็บไว้เป็นคีย์ในแผนที่เป้าหมายในรูปแบบของ param1, param2 และ paramn ตามลำดับ พารามิเตอร์แรกคือ param1 และพารามิเตอร์ nth คือ paramn
2.2. หากพารามิเตอร์เป็นพารามิเตอร์ที่มีชื่อด้วยคำอธิบายประกอบ @param จะถูกเก็บไว้ในแผนที่เป้าหมายด้วยชื่อที่ระบุโดย @param เป็นคีย์
2.3. หากพารามิเตอร์ไม่ได้รับการตั้งชื่อตามคำอธิบายประกอบ @param พวกเขาจะถูกเก็บไว้เป็นคีย์ในแผนที่เป้าหมายในรูปแบบของ 0, 1 และ N ตามลำดับ พารามิเตอร์แรกคือ 0 และพารามิเตอร์ NTH คือ N
สรุป
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่าเนื้อหาของบทความนี้จะมีค่าอ้างอิงบางอย่างสำหรับการศึกษาหรือที่ทำงานของทุกคน หากคุณมีคำถามใด ๆ คุณสามารถฝากข้อความไว้เพื่อสื่อสาร ขอบคุณสำหรับการสนับสนุน Wulin.com