Mybatis adalah kerangka kerja lapisan kegigihan yang sangat baik yang mendukung pertanyaan SQL biasa, prosedur tersimpan dan pemetaan lanjutan. Mybatis menghilangkan pengaturan manual hampir semua kode dan parameter JDBC dan enkapsulasi pencarian dari set hasil. Mybatis dapat menggunakan XML sederhana atau anotasi untuk konfigurasi dan pemetaan asli, antarmuka pemetaan dan pojos Java (objek java tua biasa) ke dalam catatan dalam database.
Di artikel sebelumnya, saya akan memperkenalkan tutorial tentang pemetaan mybatis satu-ke-satu.
Izinkan saya memberi tahu Anda tentang mybatis pengetahuan pemetaan banyak-ke-banyak. Detail spesifiknya adalah sebagai berikut:
Ada banyak contoh banyak-ke-banyak, seperti hubungan antara kursus dan siswa. Kursus dapat memiliki banyak siswa pilihan, dan seorang siswa juga dapat mengambil banyak mata pelajaran. Hubungan antara guru dan siswa: seorang guru memiliki banyak siswa, dan seorang siswa memiliki banyak guru.
Ambil hubungan antara siswa dan kursus sebagai contoh.
Saat kami membuat tabel data, kami memiliki dua solusi:
Tipe pertama:
Saat membuat tabel data siswa, simpan bidang kunci asing untuk kursus.
Saat membuat tabel data kursus, simpan bidang kunci asing siswa.
Tetapi ini memiliki kerugian besar, yaitu, jika saya ingin menghapus tabel siswa, ada bidang kunci asing dari tabel kursus.
Demikian pula, ketika saya ingin menghapus tabel kursus, ada bidang kunci asing dari tabel siswa. Oh, tidak mudah untuk menghadapinya.
Tipe kedua:
Kami membuat tabel siswa dan kursus, dan menyimpan bidang dan catatan masing -masing di dua tabel.
Tabel Student_Course biasa lainnya digunakan sebagai meja perantara untuk menyimpan kunci asing untuk siswa dan kursus.
Ini sangat nyaman bagi kami untuk menghapus tabel kata, jadi kami mengadopsi solusi ini.
Skrip database
-Pemetaan Banyak-ke-Banyak-Hapus Basis Data Database Database Jika ada MyBatis;-Buat Database Buat Database Jika Tidak Ada MyBatis Default Character Set UTF8;-Pilih Basis Data Gunakan MyBatis;-Hapus Tabel Data, Konsep Data, jika ada Siswa; tabel drop tabel jika ada kursus; Drop Table jika ada siswa. PK_SID Key Primary (SID)); Buat kursus tabel (CID int (255), cName varchar (32), kendala PK_CID Key Primary (CID)); Buat Table Student_Course (SID INT (255), CID INT (255), Batasan PK_SID_CID Kunci Utama (SID, CID), Batasan FK_SID Kunci Asing (SID) Siswa (SID), Kursus Siswa Siswa (CID) (CID) (CID); (2, 'ha'); masukkan ke dalam kursus (cid, cname) nilai (1, 'java'); masukkan ke dalam kursus (cid, cname) nilai (2, 'net'); masukkan ke dalam nilai -nilai Student_Course (SID, CID); ke dalam nilai -nilai Student_course ke dalam Student_Course (SID, CID) (1,2); Siswa); Nilai Siswa); nilai (Sid, CID) (2,2);
Buat kelas Many2Many.course.java baru
Paket Many2Many; Impor Java.io.Serializable; impor java.util.arraylist; impor java.util.list;/*** kursus*@Author administrator **/ @SuppressWarnings ("Serial") Kursus Public Sispisents = Siswa PRIVERSIBLIST {private integer cid; private string string cname private CNAME (Siswa Private CNOWSLIST = Private LIGN; getCid() {return cid;}public void setCid(Integer cid) {this.cid = cid;}public String getCname() {return cname;}public void setCname(String cname) {this.cname = cname;}public List<Student> getStudents() {return students;}public void setStudents(List<Student> students) {this.students = siswa;}}Buat kelas Many2Many.student.java baru
Paket Many2ry; Impor Java.io.Serializable; Impor java.util.arraylist; impor java.util.list;/*** kelas siswa*@author administrator **/ @SuppressWarnings ("Serial") Public Class <Kursus Publicable {Private Integer Sid; Private String Sname; Private String Sname; getSid () {return sid;} public void setSid (integer sid) {this.sid = sid;} public string getSname () {return sname;} public void setSname (string sname) {this.sname = sname;} public List <Course> getCourses () {return courses; {this.courses = kursus;}}Buat file StudentMapper.xml baru dan file Coursemapper.xml
<? Xml Version = "1.0" encoding = "UTF-8"?> <! Doctype mapper public "-// mybatis.org//dtd mapper 3.0 // en" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <Mapper napper = "" mapper "<" Mapper "> type = "many2yy.student" id = "studentmap"> <id properti = "sid" column = "sid"/> <result property = "sname" column = "sname"/> <hasil properti = "sname"/> </resultMap> <? xml version = "1.0" encoding = "UTF-8"?> <! DocType mapper = "1.0" encoding = "UTF-8"?> <! DocType mapper = "1.0" encoding = "UTF-8"?> <! DocType mapper = "1,0" encoding = "UTF-8"?> <! DocType mapping = "1,0" encoding = "UTF-8"?> <! DocType mapper = "-rat" mybat "myBaP/uNDAT. 3.0 // en "" http://mybatis.org/dtd/mybatis-3-mapper.dtd "> <mapper namespace =" coursenamespace "> <resultMap type =" Many2Many.course "id =" courseMap "> <id properti =" cid "colom =" cour "courseMap"> <id properti = "cid" colom = "COLACT" COURSEMAP "> COURSEMAP"> <id properti = "cid" COLUMN = "COLIM =" COLAD "/" COURSEMAP "> <id properti =" cid "COLUMN =" COLIM = "CIREP"/"COURSEMAP"> <id properti = "cid" COLUMN = "COLIM =" COLAD "COURSEMAP"> <ID Propert = "cid" cid "cid" kolom = "cName"/> <RancesMap> <!-query kursus yang Anda ambil dalam "haha"-> <pilih id = "findAllbyname" parameterType = "string" resultMap = "courseMap"> pilih c.cname, c.cid dari student S, kursus c, student_course sc.sid s.sid = sc.sid dan c.cid dari student S, course c, student_course sc.sid s.sid = sc.sid dan c.cid dari S Student S, Studure C, Student_Course s.sid s.sid = sc.sid dan C. #{sname}; </dectle> </mapper>Buat Kelas Kegigihan Lapisan Kegigihan Studentcoursedao.java
Paket Many2Many; Impor java.util.iterator; impor java.util.list; import one2many.student; impor org.apache.iatis.Session.sqlsession; impor org.junit.test; Impor util.mybatisil; public class class class studentcoursedao {/* @return* @throws Exception*/Daftar Publik <side> findAllByName (nama string) melempar Exception {sqlSession sqlsession = null; coba {sqlsession = mybatisutil.getsqlsession (); return sqlsession.selectlist ("coursenamespace.findallbyname" {E.PrintStackTrace (); Throw e;} akhirnya {mybatisutil.closesqlSession ();}}@testpublic void testfindallbyname () melempar pengecualian {studentcoursedao dao = new studentcoursedao (); Daftar <kursus> kursus = DAO. " {System.out.println (course.getCid ()+":"+course.getCname ());}}}Muat file konfigurasi di file mybatis.cfg.xml
<!-Muat file pemetaan-> <mapper Resource = "One2One/cardmapper.xml"/> <mapper Resource = "One2One/StudentMapper.xml"/> <mapper Resource = "One2Many/Grademapper.xml"/> <mapper Resource = "One2Many/Studentmapper.xml" Sumber Daya = "Many2ry/StudentMapper.xml"/> <mapper Resource = "Many2ry/Coursemapper.xml"/> <mapper Resource = "Many2ry/Coursemapper.xml"/> <mapper sumber daya = "many2y/coursemapper.xml"/<mapper sumber daya = "many2y/coursemapper.xml"/<mapper = "many2y/coursemapper.xml"/<mapper = "many2y/coursemapper.xml"/<Mapper = "
Di atas adalah tutorial pertama tentang pemetaan MyBatis banyak-ke-banyak yang diperkenalkan kepada Anda oleh editor. Saya harap ini akan membantu Anda. Jika Anda memiliki pertanyaan, silakan tinggalkan saya pesan dan editor akan membalas Anda tepat waktu. Terima kasih banyak atas dukungan Anda ke situs web Wulin.com!