MyBatis est un excellent cadre de couche de persistance qui prend en charge les requêtes SQL simples, les procédures stockées et la cartographie avancée. MyBatis élimine les paramètres manuels de presque tous les code et paramètres JDBC et l'encapsulation de recherche de l'ensemble de résultats. MyBatis peut utiliser du XML ou des annotations simples pour la configuration et la cartographie originale, les interfaces de cartographie et les Pojos de Java (Old Java objets) en enregistrements dans la base de données.
Dans l'article précédent, je vous présenterai le tutoriel sur la cartographie individuelle MyBatis.
Permettez-moi de vous parler des connaissances MyBatis plusieurs à plusieurs. Les détails spécifiques sont les suivants:
Il existe de nombreux exemples de plusieurs à plusieurs, tels que la relation entre le cours et les étudiants. Un cours peut avoir plusieurs étudiants électifs et un étudiant peut également prendre plusieurs matières. La relation entre les enseignants et les élèves: un enseignant a plusieurs élèves et un élève a plusieurs enseignants.
Prenez la relation entre les étudiants et le cours à titre d'exemple.
Lorsque nous créons des tables de données, nous avons deux solutions:
Le premier type:
Lors de la création d'une table de données étudiants, stockez un champ de clé étrangère pour un cours.
Lors de la création d'une table de données de cours, stockez un champ de clé étrangère d'un étudiant.
Mais cela a un gros inconvénient, c'est-à-dire que si je veux supprimer la table des étudiants, il y a un champ de clé étrangère de la table de cours.
De même, lorsque je souhaite supprimer le tableau des cours, il existe des champs de clés étrangers de la table des étudiants. Oh, ce n'est pas facile à gérer.
Le deuxième type:
Nous créons des tables d'étudiants et de cours et stockons leurs champs et enregistrements respectifs dans les deux tables.
Un autre tableau commun des étudiants est utilisé comme une table intermédiaire pour stocker des clés étrangères pour l'étudiant et le cours.
Ceci est très pratique pour nous de supprimer le tableau des mots, nous adoptons donc cette solution.
Scripts de base de données
- mappage de plusieurs à plusieurs - Supprimer la base de données de la base de données si existe MyBatis; - Créer une base de données de données Créer une base de données s'il n'est pas existant le jeu de caractères par défaut MyBatis UTF8; - Sélectionnez la base de données PK_SID Primary Key (SID)); Créer un cours de table (CID INT (255), CNAME VARCHAR (32), CONTRAINTION PK_CID Primary Key (CID)); créer une table étudiante_course (sid int (255), CID INT (255), contrainte PK_SID_CID Clé primaire (SID, CID), Contrainte FK_SID Foreign Key (SID) Références Student (SID), Contrainte FK_CID Foreign Key (CID) Références Course (CID)); - Test Data Insert in Student (Sid, Sname) (2, 'ha'); insérer dans le cours (cid, cname) valeurs (1, 'java'); insérer dans le cours (cid, cname) valeurs (2, '. Net'); insérer dans Student_course (sid, cid) (1,1); insert in student_course (sid, cid) valeurs (1,2); insert insert in student_course Student_course (Sid, CID) Valeurs (2,2);
Créer une nouvelle classe many2many.course.java
Package Many2many; Importer java.io.serializable; import java.util.arraylist; import java.util.list; / *** cours * @Author Administrator ** / @ SupressWarnings ("Serial") Cours public implémente Serializable {Private Integer CID; Private String Cname; Private List <Student> Students = New Arriylist <);); Public Integer (Private Student> Student> StudentS = New Arraylist <);); {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 <s étudiant> student> stuitants) {this. étudiants;}}Créez une nouvelle classe Many2many.Student.java
Package Many2many; Importer java.io.serializable; import java.util.arraylist; import java.util.list; / *** classe étudiante * @Author Administrator ** / @ SupressWarnings ("Serial") Public Student implémente Serializable {private integer sid; private String Sname; private list goard> Courses> Courses = Courses = new Adordlist <Course> (); {return sid;} public void SetSid (entier sid) {this.sid = sid;} public String getName () {return sname;} public void setsName (String Sname) {this.sname = sname;} public list <Course> getCourses () {return Courses;} public Void setCourses (list <Course> Courses) cours;}}Créez un nouveau fichier étudiantmapper.xml et fichier Coursemapper.xml
<? xml version = "1.0" Encoding = "UTF-8"?> <! Doctype Mappeur public "- // mybatis.org//dtd mapper 3.0 // en" "http://mybatis.org/dtd/mybatis" Type = "Many2Many.Student" id = "StudentMap"> <id Property = "Sid" Column = "SID" /> <Result Property = "Sname" Column = "Sname" /> <Result Property = "Sname" /> </ ResultMap> <! Xml version = "1.0" Encoding = "utf-8"?> <! Doctype Version) 3.0 // en "" http://mybatis.org/dtd/mybatis-3-mapper.dtd "> <mapper namespace) Column = "cname" /> <resultMap> <! - Interrogez les cours que vous avez suivis "haha" -> <select id = "FindallName" ParametType = "String" resultMap = "CoursEMap"> SELECT C.CNAM # {Sname}; </lect> </naucper>Créez une nouvelle classe de couche de persistance StudentCoursedao.java Classe
Package Many2many; Import Java.util.iterator; import java.util.list; import one2many.student; import org.apache.ibatis.session.sqlSession; Import org.junit.test; @ return * @throws exception * / public list <amours> findallByName (name de chaîne) lève une exception {sqlSession sqlSession = null; try {sqlSession = MyBatisUtil.getsqlSession (); return sqlSession.SelectList ("CourseNameSpace.FindallName", nom);} catch (exception e) { e;} enfin {mybatisutil.closesqlSession ();}} @ testpublic void testFindallName () lève une exception {StudentCoursedao dao = new StudentCoursedao (); list <Course> Courses = Dao.FindallByName ("haha"); for (cours des cours: cours)) {System.out.println (Course.getCid () + ":" + Course.GetCName ());}}}Chargez le fichier de configuration dans le fichier mybatis.cfg.xml
<! - Chargez le fichier de mappage -> <mapper ressource = "one2one / cardmapper.xml" /> <mapper ressource = "one2one / studentmapper.xml" /> <masper ressource = "one2many / grademapper.xml" /> <mapper ressource = "one2many / étudiantmapper.xml" /> < Ressource = "Many2Many / StudentMapper.xml" /> <Mapper Resource = "Many2Many / CourseMapper.xml" /> <Mapper Resource = "Many2many / Coursemapper.xml" /> <MAPPERCE = "Many2many / Coursemapper.xml" /> <MAPPERCE = "Many2many / Coursemapper.xml" /> <MAPPERCE = "
Ce qui précède est le premier tutoriel sur Mybatis, la cartographie de plusieurs à plusieurs personnes présentée par l'éditeur. J'espère que cela vous sera utile. Si vous avez des questions, veuillez me laisser un message et l'éditeur vous répondra à temps. Merci beaucoup pour votre soutien au site Web Wulin.com!