1. ภาพรวม
เมื่อเลือกการแมปใน mybatis ประเภทการส่งคืนสามารถใช้กับผลลัพธ์หรือผลลัพธ์ได้ ResultType แสดงถึงประเภทการส่งคืนโดยตรงในขณะที่ ResultMap เป็นข้อมูลอ้างอิงถึงผลลัพธ์ภายนอก แต่ ResultType และผลลัพธ์ไม่สามารถมีอยู่ในเวลาเดียวกัน
เมื่อ MyBatis กำลังค้นหาการแมปในความเป็นจริงแต่ละแอตทริบิวต์แบบสอบถามจะถูกวางไว้ในแผนที่ที่สอดคล้องกันซึ่งคีย์คือชื่อแอตทริบิวต์และค่าคือค่าที่สอดคล้องกัน
①เมื่อแอตทริบิวต์ประเภทการส่งคืนที่ให้มาคือ ResultType, MyBatis จะนำคู่ค่าคีย์ออกมาในแผนที่และกำหนดให้กับแอตทริบิวต์ที่สอดคล้องกันของวัตถุที่ระบุโดย ResultType ดังนั้นในความเป็นจริงประเภทการกลับมาของแผนที่แบบสอบถามแต่ละตัวของ mybatis คือผลลัพธ์ map อย่างไรก็ตามเมื่อแอตทริบิวต์ประเภท Return ที่ให้มาคือ ResultType, MyBatis จะกำหนดค่าที่สอดคล้องกันโดยอัตโนมัติไปยังแอตทริบิวต์ของวัตถุที่ระบุโดย ResultType
②เมื่อประเภทการส่งคืนที่ให้มาคือผลลัพธ์ที่ได้เนื่องจากแผนที่ไม่สามารถเป็นตัวแทนของโมเดลโดเมนได้ดีมันจำเป็นต้องแปลงมันให้เป็นวัตถุที่เกี่ยวข้องเองซึ่งมักจะมีประโยชน์มากในการสืบค้นที่ซับซ้อน
2. ผลลัพธ์
blog.javapublic คลาสบล็อก {private int id; ชื่อสตริงส่วนตัว; เนื้อหาสตริงส่วนตัว; เจ้าของสตริงส่วนตัว; รายการส่วนตัว <ความคิดเห็น> ความคิดเห็น;}ตารางฐานข้อมูลที่สอดคล้องกันเก็บรหัสชื่อเนื้อหาและแอตทริบิวต์เจ้าของ
<typealias alias = "blog" type = "com.tiantian.mybatis.model.blog"/> <select id = "selectblog" parameterType = "int" resultType = "blog"> เลือก * จาก t_blog โดยที่ id = #{id}MyBatis จะสร้างวัตถุ MAP โดยอัตโนมัติจากนั้นห่อหุ้มคู่ค่าคีย์ตามชื่อแอตทริบิวต์ที่พบ จากนั้นคุณจะเห็นว่าประเภทการส่งคืนเป็นวัตถุบล็อกจากนั้นนำคู่ค่าคีย์ออกมาซึ่งสอดคล้องกับวัตถุบล็อกจาก ResultMap และกำหนด
3. ผลลัพธ์ที่ได้
นอกจากนี้ยังมีประโยชน์มากเมื่อประเภทการส่งคืนเป็นผลลัพธ์โดยตรงซึ่งส่วนใหญ่ใช้สำหรับการสืบค้นข้อต่อที่ซับซ้อนเนื่องจากไม่จำเป็นต้องดำเนินการสืบค้นง่าย ๆ ก่อนอื่นให้ดูที่การสืบค้นง่าย ๆ ที่มีผลลัพธ์ประเภทส่งคืนจากนั้นดูการใช้การสืบค้นที่ซับซ้อน
①เขียนแบบสอบถามง่ายๆ
<resultmap type = "blog" id = "blogresult"> <id column = "id" คุณสมบัติ = "id"/> <result column = "title" คุณสมบัติ = "title"/> <result column = "เนื้อหา" คุณสมบัติ = "เนื้อหา"/> <result column = "เจ้าของ" เจ้าของ = "เจ้าของ"/> < คุณสมบัติ = "เจ้าของ"/> <</resultmap> <select id = "selectblog" parameterType = "int" resultmap = "blogresult"> เลือก * จาก t_blog โดยที่ id = #{id} </select>ค่าของผลลัพธ์ที่ได้ในแผนที่เลือกคือ ID ของผลลัพธ์ภายนอกซึ่งระบุว่าผลลัพธ์ใดที่แมปไปยัง แอตทริบิวต์ประเภทของผลลัพธ์ภายนอกหมายถึงประเภทผลลัพธ์ของผลลัพธ์ของผลลัพธ์คืออะไร นี่คือประเภทบล็อกดังนั้น mybatis จะนำมันออกเป็นวัตถุบล็อก ID โหนดลูกของโหนดผลลัพธ์ที่ใช้ในการระบุ ID ของวัตถุในขณะที่โหนดลูกผลลัพธ์จะใช้เพื่อระบุคุณสมบัติง่าย ๆ บางอย่าง คุณสมบัติคอลัมน์แสดงถึงแอตทริบิวต์ที่สอบถามจากฐานข้อมูลและคุณสมบัติแสดงถึงคุณสมบัติใดที่คุณสมบัติที่สอดคล้องกันของคุณสมบัติการสืบค้นถูกกำหนดให้กับวัตถุเอนทิตี นี่คือวิธีการเขียนผลลัพธ์สำหรับการสืบค้นง่าย ๆ
② Comcomplex Query
มีคลาสความคิดเห็นซึ่งมีการอ้างอิงบล็อกซึ่งระบุว่าบล็อกใดมีไว้สำหรับ เมื่อสอบถามความคิดเห็นบล็อกที่เกี่ยวข้องจะต้องพบและกำหนดให้กับแอตทริบิวต์บล็อก
ความคิดเห็นคลาสสาธารณะ {ID ส่วนตัว ID; เนื้อหาสตริงส่วนตัว; วันที่ส่วนตัวความคิดเห็นเดต = วันที่ใหม่ (); บล็อกส่วนตัวบล็อก;} <!-จากความคิดเห็น mapper.xml ไฟล์-> <resultmap type = "comment" id = "commentResult"> <Association property = "blog" select = "selectBlog" blog-blog resultmap = "commentResult"> เลือก * จาก t_comment โดยที่ id = #{id} </select> <select id = "selectblog" parameterType = "int" resultType = "blog"> เลือก * จาก t_blog โดยที่ id = #{id} </selecte>ก่อนอื่นให้ขอแผนที่เลือกด้วย ID เป็น SelectComment จากนั้นรับวัตถุ ResultMap ที่มี ID เป็น commentResult คุณจะเห็นว่าประเภทการส่งคืนของผลลัพธ์ที่สอดคล้องกันเป็นวัตถุความคิดเห็นซึ่งมีเพียงหนึ่งโหนดการเชื่อมโยงและไม่มี ID และโหนดลูกผลลัพธ์ที่สอดคล้องกับแบบสอบถามง่าย ๆ ที่กล่าวถึงข้างต้น อย่างไรก็ตามมันจะยังคงกำหนด ID ที่เกี่ยวข้องและแอตทริบิวต์อื่น ๆ ให้กับวัตถุความคิดเห็น นี่คือสิ่งที่ mybatis กล่าวถึงก่อนหน้านี้มันมีฟังก์ชั่นการห่อหุ้มอัตโนมัติ ตราบใดที่มีการจัดเตรียมประเภทการส่งคืน MyBatis จะใช้ผลลัพธ์การสืบค้นเพื่อห่อหุ้มวัตถุที่เกี่ยวข้องตามการตัดสินของตัวเอง ดังนั้นในการสืบค้นอย่างง่ายข้างต้นหากไม่ได้ระบุว่าฟิลด์ใดที่สอดคล้องกับ ID และฟิลด์ใดที่สอดคล้องกับชื่อเรื่องในผลลัพธ์ MyBatis จะช่วยห่อหุ้มมันตามการตัดสินของตัวเอง การตัดสินของ MyBatis คือการเปรียบเทียบฟิลด์ของการสืบค้นหรือนามแฝงที่สอดคล้องกันกับคุณลักษณะของวัตถุส่งคืน ถ้ามันเข้ากันและประเภทก็ตรงกับ MyBatis จะกำหนด แอตทริบิวต์บล็อกมีความเกี่ยวข้องในผลลัพธ์ที่สอดคล้องกันด้านบนและประเภท Java ที่สอดคล้องกันคือบล็อก ในวิธีการเขียนข้างต้นวัตถุที่เกี่ยวข้องนั้นเกี่ยวข้องกับการคาดการณ์ย่อยและแน่นอนว่ามันยังสามารถเชื่อมโยงโดยตรงผ่านการสืบค้นสมาคม ในโหนด Association Association ข้างต้นแอตทริบิวต์คุณสมบัติระบุว่าคุณสมบัติใดที่เกี่ยวข้องคือประเภทผลตอบแทนผลลัพธ์ สำหรับตัวอย่างข้างต้นแอตทริบิวต์บล็อกที่จัดการโดยความคิดเห็น; เลือกระบุว่าเลือกแผนที่ใดเพื่อทำแผนที่แอตทริบิวต์ที่เกี่ยวข้องที่เกี่ยวข้องนั่นคือจะขอแผนที่เลือกด้วยค่าที่สอดคล้องกันเพื่อเลือกเพื่อค้นหาวัตถุแอตทริบิวต์ที่เกี่ยวข้อง คอลัมน์ระบุคู่คีย์-ค่าที่สอดคล้องกับผลลัพธ์ที่มี ID commentResult คู่คีย์-ค่านี้จะถูกใช้เป็นพารามิเตอร์สำหรับคำถามย่อยของวัตถุที่เกี่ยวข้องนั่นคือค่าของการสืบค้นแอตทริบิวต์บล็อกใน SelectComment จะถูกส่งผ่านเป็นพารามิเตอร์ไปยังคำถามย่อยของบล็อกวัตถุที่เกี่ยวข้องกับคำถามย่อยของบล็อกวัตถุที่เกี่ยวข้อง Javatype ระบุประเภทของวัตถุที่เกี่ยวข้องในปัจจุบันที่อยู่ใน Java
ข้างต้นแนะนำการสืบค้นของความสัมพันธ์แบบหนึ่งต่อหนึ่งหรือหนึ่งต่อหนึ่งในกรณีของหนึ่งต่อหนึ่ง ในแอปพลิเคชันจริงมีแอปพลิเคชันอื่นที่ใช้บ่อยขึ้น มันคือการค้นหาฝ่ายที่เกี่ยวข้องมากขึ้นผ่านแบบหนึ่งต่อหนึ่ง เมื่อออกจากงานปาร์ตี้มากขึ้นก็ต้องเชื่อมโยงแบบหนึ่งต่อหนึ่ง: เมื่อนำวัตถุบล็อกออกมาให้นำความคิดเห็นที่เกี่ยวข้องทั้งหมดออกมาและเมื่อนำความคิดเห็นออกมาก็ยังต้องนำบล็อกที่เกี่ยวข้องออกมาซึ่งนำออกมาใน Java ผ่านคำขอ
<!-จาก blogmapper.xml ไฟล์-> <resultmap type = "blog" id = "blogresult"> <id column = "id" property = "id"/> <collection property = "ความคิดเห็น" select = "selectcommentsbyblog" column = "id" ของ type = "ความคิดเห็น" javatype = "blog" column = "blog" select = "selectblog"/> </resultmap> <select id = "selectblog" parameterType = "int" resultmap = "blogresult"> เลือก * จาก t_blog โดยที่ id = #{id} blog = #{blogid} </select>รายการของคำขอด้านบนคือแผนที่เลือกด้วย ID SelectBlog และผลลัพธ์การส่งคืนเป็นผลลัพธ์ที่มี ID blogresult ประเภทของ ID blogresult คือบล็อกซึ่งระบุคุณสมบัติและฟิลด์ของ ID การระบุ ID จะมีผลอย่างมากต่อการก่อสร้างภายในของ mybatis มันเกี่ยวข้องกับวัตถุความคิดเห็น เนื่องจากบล็อกสามารถมีความคิดเห็นมากมายซึ่งเป็นคอลเลกชันดังนั้นจึงถูกแมปกับคอลเลกชันคอลเลกชัน SELECT ยังคงระบุว่าคำถามย่อยใดที่ดำเนินการเพื่อสอบถามความคิดเห็นที่เกี่ยวข้อง คอลัมน์หมายถึงค่าฟิลด์ที่พบด้านบนจะถูกส่งผ่านไปยังคำถามย่อยเป็นพารามิเตอร์ OfType ยังแสดงถึงประเภทการส่งคืน ประเภทการส่งคืนที่นี่เป็นประเภทภายในคอลเลกชัน เหตุผลที่มีการใช้ ttype แทนประเภทคือมันถูกใช้ภายใน mybatis เพื่อแยกความแตกต่างจากสมาคมสมาคม
โมฆะสาธารณะ SelectcommentsByBlogTest () {SQLSESSION SESSION = UTIL.GETSQLSessionFactory (). OpenSession (); commentMapper commentMapper = session.getMapper (commentMapper.class); รายการ <ความคิดเห็น> ความคิดเห็น = ความคิดเห็น Void testselectone () {sqlsession session = util.getSqlSessionFactory (). opensession (); BlogMapper BlogMapper = session.getMapper (blogmapper.class); บล็อก = blogmapper.selectblog (6); รายการ <ความคิดเห็น> ความคิดเห็น = บล็อก ความคิดเห็น) System.out.println (ความคิดเห็น);} session.close ();}ข้างต้นคือผลลัพธ์ที่ได้และผลลัพธ์ใน mybatis แนะนำให้คุณรู้จักโดยบรรณาธิการ ฉันหวังว่ามันจะเป็นประโยชน์กับคุณ หากคุณมีคำถามใด ๆ โปรดฝากข้อความถึงฉันและบรรณาธิการจะตอบกลับคุณทันเวลา ขอบคุณมากสำหรับการสนับสนุนเว็บไซต์ Wulin.com!