MyBatis เป็นเฟรมเวิร์กเลเยอร์การคงอยู่ที่ยอดเยี่ยมที่รองรับการสืบค้น SQL แบบธรรมดาขั้นตอนที่เก็บไว้และการทำแผนที่ขั้นสูง MyBatis กำจัดการตั้งค่าด้วยตนเองของรหัส JDBC เกือบทั้งหมดและพารามิเตอร์และการค้นหาการห่อหุ้มของชุดผลลัพธ์ MyBatis สามารถใช้ XML อย่างง่ายหรือคำอธิบายประกอบสำหรับการกำหนดค่าและการแมปดั้งเดิมการแมปอินเทอร์เฟซและ pojos ของ Java (วัตถุ Java เก่าธรรมดา) ลงในบันทึกในฐานข้อมูล
ในบทความก่อนหน้านี้ฉันจะแนะนำการสอนเกี่ยวกับการทำแผนที่แบบตัวต่อตัวของ MyBatis
ให้ฉันบอกคุณเกี่ยวกับความรู้การทำแผนที่หลายต่อหลายครั้ง รายละเอียดเฉพาะมีดังนี้:
มีตัวอย่างมากมายถึงหลายคนเช่นความสัมพันธ์ระหว่างหลักสูตรและนักเรียน หลักสูตรสามารถมีนักเรียนที่มีวิชาเลือกหลายคนและนักเรียนสามารถเรียนวิชาได้หลายวิชา ความสัมพันธ์ระหว่างครูและนักเรียน: ครูมีนักเรียนหลายคนและนักเรียนมีครูหลายคน
ใช้ความสัมพันธ์ระหว่างนักเรียนและหลักสูตรเป็นตัวอย่าง
เมื่อเราสร้างตารางข้อมูลเรามีสองวิธี:
ประเภทแรก:
เมื่อสร้างตารางข้อมูลนักเรียนจัดเก็บฟิลด์คีย์ต่างประเทศสำหรับหลักสูตร
เมื่อสร้างตารางข้อมูลหลักสูตรจัดเก็บสาขาคีย์ต่างประเทศของนักเรียน
แต่สิ่งนี้มีข้อเสียครั้งใหญ่นั่นคือถ้าฉันต้องการลบตารางนักเรียนมีสาขาคีย์ต่างประเทศของตารางหลักสูตร
ในทำนองเดียวกันเมื่อฉันต้องการลบตารางหลักสูตรมีสาขาคีย์ต่างประเทศของตารางนักเรียน โอ้มันไม่ใช่เรื่องง่ายที่จะจัดการกับ
ประเภทที่สอง:
เราสร้างตารางนักเรียนและหลักสูตรและจัดเก็บสาขาและบันทึกของพวกเขาในสองตาราง
ตารางนักเรียนทั่วไปอีกตารางหนึ่งใช้เป็นตารางกลางเพื่อจัดเก็บกุญแจต่างประเทศสำหรับนักเรียนและหลักสูตร
สิ่งนี้สะดวกมากสำหรับเราในการลบตารางคำดังนั้นเราจึงนำโซลูชันนี้มาใช้
สคริปต์ฐานข้อมูล
-การทำแผนที่หลายต่อหลาย-ลบฐานข้อมูล DOAD ฐานข้อมูลหากมี myBatis;-สร้างฐานข้อมูลสร้างฐานข้อมูลหากไม่มีตัวละครเริ่มต้น mybatis ชุดอักขระ utf8;-เลือกฐานข้อมูลใช้ mybatis-ลบตารางข้อมูลลง (นักเรียน PK_SID หลักคีย์หลัก (SID)); สร้างหลักสูตรตาราง (CID Int (255), CNAME VARCHAR (32), ข้อ จำกัด PK_CID หลักคีย์หลัก (CID)); สร้าง table student_course (sid int (255), CID int (255), ข้อ จำกัด PK_SID_CID หลัก (SID, CID), ข้อ จำกัด FK_SID คีย์ต่างประเทศ (SID) อ้างอิงนักเรียน (SID), ข้อ จำกัด FK_CID คีย์ต่างประเทศ (CID) (2, 'ha'); แทรกลงในหลักสูตร (cid, cname) ค่า (1, 'java'); แทรกลงในหลักสูตร (cid, cname) ค่า (2, '. net'); แทรกลงในนักเรียน _course (sid, cid) ค่า (1,1); student_course (sid, cid) ค่า (2,2);
สร้างชั้นเรียนใหม่ many2many.course.java
แพ็คเกจ many2many; นำเข้า java.io.serializable; นำเข้า java.util.arraylist; นำเข้า java.util.list;/*** หลักสูตร*@author ผู้ดูแลระบบ **/ @suppresswarnings ("serial") หลักสูตรสาธารณะ getcid () {return cid;} โมฆะสาธารณะ setcid (จำนวนเต็ม cid) {this.cid = cid;} สตริงสาธารณะ getcname () {return cname;} โมฆะสาธารณะ setcname (String cname) {this.cname = cname;} รายการสาธารณะ {this.students = นักเรียน;}}สร้างชั้นเรียนใหม่ Many2Many.student.java
แพ็คเกจ many2many; นำเข้า java.io.serializable; นำเข้า java.util.arraylist; นำเข้า java.util.list;/*** ชั้นเรียนนักเรียน*@author administrator **/ @suppresswarnings ("serial") ชั้นเรียนสาธารณะ getSid () {return sid;} โมฆะสาธารณะ setsid (จำนวนเต็ม sid) {this.sid = sid;} สตริงสาธารณะ getSname () {return sname;} void setsname สาธารณะ (String Sname) {this.sname = sname;} รายการสาธารณะ {this.courses = courses;}}สร้างไฟล์ studentmapper.xml ใหม่และไฟล์ coursemapper.xml
<? xml เวอร์ชัน = "1.0" การเข้ารหัส = "utf-8"?> <! doctype mapper สาธารณะ "-// mybatis.org//dtd mapper 3.0 // en" "http://mybatis.org/dtd/mybatis-3-mapper.dtddtd type = "many2many.student" id = "studentmap"> <id property = "sid" คอลัมน์ = "sid"/> <result property = "sname" คอลัมน์ = "sname"/> <result property = "sname"/> </resultmap> <? 3.0 // en "" http://mybatis.org/dtd/mybatis-3-mapper.dtd "> <mapper namespace =" coursenamespace "> <resultmap type =" Many2Many.Course "ID =" CourseMap " column = "cname"/> <resultmap> <!-สอบถามหลักสูตรที่คุณใช้ใน "ฮ่าฮ่า"-> <select id = "findallbyName" parameterType = "String" resultmap = "coursemap"> เลือก c.cname, c.cid จากนักเรียน S #{sname}; </select> </mapper>สร้างชั้นเรียน Layer Layer Studentcoursedao.java ใหม่
แพ็คเกจหลาย 2Many; นำเข้า java.util.iterator; นำเข้า java.util.list; นำเข้า one2many.student; นำเข้า org.apache.ibatis.session.sqlsession; นำเข้า org.junit.test; นำเข้า util.mybatisutil; @return* @throws Exception*/Public List <Cours> findallByName (ชื่อสตริง) พ่นข้อยกเว้น {SQLSession SQLSession = null; ลอง {SQLSession = myBatisutil.getSqlSession (); return sqlSession.SELECTLIST ("coursenamespace. e;} ในที่สุด {mybatisutil.closesqlsession ();}}@testpublic เป็นโมฆะ testfindallbyname () โยนข้อยกเว้น {StudentCoursedao dao = New StudentCoursedao (); {system.out.println (course.getCid ()+":"+course.getCname ());}}}โหลดไฟล์กำหนดค่าในไฟล์ mybatis.cfg.xml
<!-โหลดไฟล์การแมป-> <mapper resource = "one2one/cardmapper.xml"/> <mapper resource = "one2one/studentmapper.xml"/> <mapper resource = "one2many/grademapper.xml"/> Resource = "Many2Many/StudentMapper.xml"/> <mapper Resource = "Many2Many/coursemapper.xml"/> <mapper Resource = "Many2Many/coursemapper.xml"/> <mapper resource = "MARE2MANY/CORSEMAPPER.xML"/>
ข้างต้นเป็นบทช่วยสอนครั้งแรกในการทำแผนที่หลายต่อหลายครั้งที่แนะนำโดยบรรณาธิการ ฉันหวังว่ามันจะเป็นประโยชน์กับคุณ หากคุณมีคำถามใด ๆ โปรดฝากข้อความถึงฉันและบรรณาธิการจะตอบกลับคุณทันเวลา ขอบคุณมากสำหรับการสนับสนุนเว็บไซต์ Wulin.com!