MyBatis는 일반 SQL 쿼리, 저장 프로 시저 및 고급 매핑을 지원하는 우수한 지속성 계층 프레임 워크입니다. MyBatis는 거의 모든 JDBC 코드의 수동 설정과 매개 변수 및 결과 세트의 검색 캡슐화를 제거합니다. MyBatis는 구성 및 원래 매핑, 맵핑 인터페이스 및 Java의 Pojos (일반 Old Java Objects)를 데이터베이스의 레코드로 사용하기 위해 간단한 XML 또는 주석을 사용할 수 있습니다.
이전 기사에서는 Mybatis 일대일 매핑 튜토리얼을 소개하겠습니다.
Mybatis 다수의 매핑 지식에 대해 말씀 드리겠습니다. 특정 세부 사항은 다음과 같습니다.
코스와 학생들 사이의 관계와 같은 많은 수많은 사례가 있습니다. 과정에는 여러 선택 학생이있을 수 있으며 학생은 여러 과목을 맡을 수도 있습니다. 교사와 학생의 관계 : 교사에게 여러 학생이 있고 학생에게는 여러 교사가 있습니다.
학생과 과정의 관계를 예로 들어보십시오.
데이터 테이블을 만들 때 두 가지 솔루션이 있습니다.
첫 번째 유형 :
학생 데이터 테이블을 만들 때 코스의 외국 키 필드를 저장하십시오.
코스 데이터 테이블을 만들 때 학생의 외국 키 필드를 저장하십시오.
그러나 이것은 큰 단점이 있습니다. 즉, 학생 테이블을 삭제하려면 코스 테이블의 외국 키 필드가 있습니다.
마찬가지로 코스 테이블을 삭제하려면 학생 테이블의 외국 키 필드가 있습니다. 오, 다루기가 쉽지 않습니다.
두 번째 유형 :
우리는 학생과 코스 테이블을 만들고 각 필드와 레코드를 두 테이블에 저장합니다.
또 다른 일반적인 Student_course 테이블은 학생 및 코스를위한 외래 키를 저장하기위한 중간 테이블로 사용됩니다.
이것은 우리가 단어 테이블을 삭제하는 것이 매우 편리 하므로이 솔루션을 채택합니다.
데이터베이스 스크립트
-데이터베이스 삭제 삭제 데이터베이스 삭제 myBatis;-데이터베이스 생성 데이터베이스 생성 데이터베이스 생성 데이터베이스 생성 myBatis 기본 문자 세트 UTF8;-데이터베이스 사용 myBatis 삭제 삭제 drop 테이블 삭제 학생이 존재하는 경우 삭제 테이블을 삭제하십시오. PK_SID 기본 키 (SID)); 테이블 코스 (CID INT (255), CNAME VARCHAR (32), 제약 PK_CID 1 차 키 (CID))를 작성합니다. 테이블 학생 _course (sid int (255), CID int (255), 제약 PK_SID_CID 1 차 키 (SID, CID), 제약 FK_SID 외국 키 (SID), SID), 제약 FK_CID 외국 키 (CID) 참조 참조 (CID);- 학생 (SID, SNAME) 값 (1, 삽입); (2, 'ha'); 코스에 삽입 (CID, cname) 값 (1, 'java'); 코스에 삽입 (cid, cname) 값 (2, net '); Student_course (Sid, cid) 값 (1,1)에 삽입; Student_course (SID, CID) 값 (1,2); Student_course (SID, CID) 값 (2,2);
새로운 manty2many.course.java 클래스를 만듭니다
package many2many; import java.io.serializable; import java.util.arraylist; import java.util.list;/*** 코스*@author 관리자 **/ @suppresswarnings ( "serial") 공개 수업 과정 {private Intger CID; 개인 문자열 cname;) 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 (list <studs <getstudents;}) {} {this.students = 학생;}}}새로운 MOLLANY.student.java 클래스를 만듭니다
Package Many2many; import java.io.serializable; import java.util.arraylist; import java.util.list;/*** 학생 클래스*@author 관리자 **/ @suppresswarnings ( "Serial") 공개 학생들은 시리얼 리화 가능한 {private sdger sid; private string sname; courses = cloates <couraylist <couraylist <couraylist 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> getcours () {return setcours (list <courses) {this.courses = 코스;}}새 StudentMapper.xml 파일 및 coursemapper.xml 파일을 만듭니다
<? xml version = "1.0"alcoding = "utf-8"?> <! doctype mapper public "-// mybatis.org//dtd mapper 3.0 // en" "http://mybatis.org/dtd/mybatis-3-mapper.dtd "> <Mapper Namespace ="resultmap "<moly2many. id = "StudentMap"> <id property = "sid"column = "sid"/> <result property = "sname"column = "sname"/> <result property = "sname"/> </resultmap> <? xml version = "1.0"encoding = "utf-8"?> <! 3.0 // en ""http://mybatis.org/dtd/mybatis-3-mapper.dtd "> <mapper namepace ="coursenamepace "> <resultmap type ="many2many.course "id ="coursemap "> <id property ="cid "="cid "/> <result property ="cname " column = "cname"/> <resultmap> <!-"haha"에서 얻은 과정 쿼리-> <select id = "findallbyname"ParameterType = "string"resultmap = "courseMap"> select c.cname, c.cid, course c, student_course scwhere s.sid = sc.cid = sc.cid = sc.cid = sc.cid =. #{sname}; </select> </mapper>새로운 지속성 계층 클래스 StudentCoursedao.java 클래스를 만듭니다
package many2many; import java.util.iterator; import java.util.list; import one2many.student; import org.apache.ibatis.session.sqlsession; import org.junit.test; import util.mybatisutil; public class student의 student의 stubour {*** query "aparam course"및 hahes " @return* @throws Exception*/public list <course> findAllByName (문자열 이름)은 예외를 {sqlsession sqlsession = null; try {sqlsession = mybatisutil.getSqlsession (); return sqlsession.selectlist ( "coursenamespace.findallbyname" {e.printstacktrace (); Throw e;} 마침내 {mybatisutil.closesqlsession ();}@testpublic void testfindallbyname () throws exception {StudentCoursedao dao = new StudentCoursedao (); list <course> 코스 = dao.findbyname ( "); {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"/> <mapper resource = "one2many/StudentMapper.xml"/> <mapper Resource = "Many2Many/StudentMapper.xml"/> <Mapper Resource = "Many2Many/Coursemapper.xml"/> <Mapper Resource = "Many2Many/Coursemapper.xml"/> <Mapper Resource = "MALE2MANY/COUSMAPPER.XML"/>
위는 편집자가 귀하에게 소개 한 Mybatis 다수의 매핑에 대한 첫 번째 자습서입니다. 나는 그것이 당신에게 도움이되기를 바랍니다. 궁금한 점이 있으면 메시지를 남겨 주시면 편집자가 제 시간에 답장을 드리겠습니다. Wulin.com 웹 사이트를 지원해 주셔서 대단히 감사합니다!