ร่างกายดั้งเดิมของ MyBatis คือ Ibatis และตอนนี้มันแยกออกจากมูลนิธิ Apache เว็บไซต์อย่างเป็นทางการใหม่คือ http://www.mybatis.org/
ฉันไม่ทราบว่าการใช้คำอธิบายประกอบนี้อย่างมีมนต์ขลังก่อนศึกษาซอร์สโค้ด mybatis แต่เมื่อฉันเห็นว่ามีคำอธิบายประกอบนี้เมื่อแยกวิเคราะห์พารามิเตอร์ฉันเข้าใจว่าเมื่อเราส่งคืนประเภทเช่นแผนที่ <สตริงแผนที่ <สตริงวัตถุ >> มันมักจะยากสำหรับเราที่จะทำเพราะมันอาจเป็นข้อมูลจากหลายตาราง
จากนั้นเราสามารถใช้คำอธิบายประกอบนี้ได้
@Retention (RetentionPolicy.runtime) @Target (ElementType.Method) Public @Interface Mapkey {ค่าสตริง ();};เห็นได้ชัดว่าคำอธิบายประกอบนี้ใช้กับวิธีการและการใช้งานเฉพาะคือการตั้งค่าคีย์ของแผนที่ภายนอกคืออะไร วิธีนี้เราสามารถสืบค้นผลลัพธ์ที่ซับซ้อนมากโดยไม่ต้องสร้างเอนทิตีใหม่
PS: ลองดูที่ mybatis โดยใช้ @mapkey Annotation เพื่อรับบันทึกการสืบค้นหลายรายการลงในแผนที่เพื่อให้ได้ค่าของฟิลด์โดยใช้วิธี Get () ได้อย่างง่ายดาย
สถานการณ์ความต้องการ:
ค้นหาข้อมูลหลายชิ้นจากฐานข้อมูลรวมถึงสองฟิลด์: ID และชื่อ ฉันหวังว่าผลลัพธ์จะได้รับโดยตรงโดยใช้แผนที่จากนั้นค่าของชื่อสามารถรับได้อย่างง่ายดายผ่าน map.get (id)
คำถาม:
หากคุณใช้รหัสต่อไปนี้หากมีผลลัพธ์การสืบค้นหลายรายการจะมีการรายงานข้อผิดพลาดเนื่องจาก MyBatis บันทึกผลลัพธ์ในแผนที่ในรูปแบบของ ("ID": 123) และ ("ชื่อ": "Jack") ดังนั้นหากคุณส่งคืนผลลัพธ์มันก็โอเคที่จะมีบันทึกรวมถึง ID และชื่อ หากคุณส่งคืนหลายระเบียนนั่นคือมีหลาย ("id": 123) และ ("id": 124) ดังนั้น mybatis จะโง่และไม่รู้วิธีจัดการกับมัน
แผนที่ <สตริงวัตถุ> m = abcdao.getNamesByIds (idlist);
ทางออกคือการใช้แผนที่อื่นนอก:
แผนที่ <จำนวนเต็ม, แผนที่ <สตริง, วัตถุ >> m = abcdao.getNamesByIds (idlist);
จากนั้นเพิ่มคำอธิบายประกอบในวิธีนี้:
<span style = "space สีขาว: pre"> </span>/** <span style = "space สีขาว: pre"> </span> * รับชื่อในแบทช์ตาม IDs หลายตัว <span style = "space สีขาว: pre"> </span> * @param รายการที่มีคีย์แผนที่ = "id" </span> */<span style = "space สีขาว: pre"> </span> */<span style = "space สีขาว: pre"> </span> @mapkey ("id") <span style = "space สีขาว: pre"> </span> แผนที่สาธารณะ <อินเตอร์คำอธิบายประกอบนี้บ่งชี้ว่ากุญแจของแผนที่ด้านนอกสุดคือค่าของฟิลด์ชื่อ "ID" ในผลลัพธ์การสืบค้น
การกำหนดค่าใน mapper.xml มีดังนี้:
<select id = "getNamesByIds" resultType = "java.util.map"> เลือกรหัสชื่อจาก tb_abc โดยที่ id ใน <foreach item = "item" collection = "list" open = "(" separator = "close =") "> #{item.id}ข้างต้นเป็นคำอธิบายโดยละเอียดเกี่ยวกับการใช้ @mapkey ในคำอธิบายประกอบ MyBatis แนะนำให้คุณรู้จักโดยบรรณาธิการ ฉันหวังว่ามันจะเป็นประโยชน์กับคุณ หากคุณมีคำถามใด ๆ โปรดฝากข้อความถึงฉันและบรรณาธิการจะตอบกลับคุณทันเวลา ขอบคุณมากสำหรับการสนับสนุนเว็บไซต์ Wulin.com!