MyBatis 에서 다 중 관계 에 대한 맵 과 조회
페이지 에 데이터베이스 에 있 는 모든 도 서 를 표시 하고 도 서 를 표시 하 는 동시에 이 도서 가 속 한 유형 을 표시 합 니 다.(이 책 은 여러 종류 에 속 할 수 있 습 니 다)
생 성 표:
필 자 는 여기 서 중간 표를 사용 하여 도서 표 와 도서 유형 표를 연결 하고 도서 표 에 외 키 관련 도서 유형 표를 사용 하지 않 았 다.
중간 표 에서 도서 메 인 키 와 카 테 고리 메 인 키 를 참조 하 였 습 니 다.
중간 표를 통 해 도서 와 도서 유형의 관 계 를 표시 하 다.
도서 표 만 들 기(도서 번호,도서 이름)
create table book
(
bid int primary key auto_increment,
bname varchar(20)
);
분류 표 만 들 기(분류 번호,분류 이름)
create table category
(
cid int primary key auto_increment,
cname varchar(20)
);
중간 표 만 들 기(도서 번호,분류 번호)
create table middle
(
m_bid int,
m_cid int,
constraint fk_bid foreign key(m_bid) references book(bid),
constraint fk_cid foreign key(m_cid) references category(cid)
);
테스트 데이터 삽입
insert into category values (default,'java');
insert into category values (default,'c++');
insert into category values (default,'mysql');
insert into book values (default,'SQL ');
insert into book values (default,'SSM+MySQL ');
insert into book values (default,'C++ java ');
insert into middle values (1,3);
insert into middle values (2,1);
insert into middle values (2,3);
insert into middle values (3,2);
insert into middle values (3,1);
삽 입 된 데이터 중 첫 번 째 책 은 하나의 유형 이 있 고 두 번 째 책 과 세 번 째 책 은 모두 두 가지 유형 이 있다.지금까지 데이터베이스 일 은 끝났다.다음은 MyBatis-generator 를 통 해 실체 클래스,DAO 인터페이스,XML 맵 파일 을 생 성 합 니 다. 여 기 를 클릭 하지 않 습 니 다.
편리 함 을 위해 필 자 는 자바 프로젝트 프레젠테이션 을 통 해 새로 만 든 자바 프로젝트 에 자동 으로 생 성 된 파일 을 넣 고 관련 된 Jar 패 키 지 를 가 져 옵 니 다.프로젝트 구 조 는 다음 과 같 습 니 다.
이제 생 성 된 도서 실체 류 를 열 어 보 겠 습 니 다.
public class Book {
private Integer bid;
private String bname;
public Integer getBid() {
return bid;
}
public void setBid(Integer bid) {
this.bid = bid;
}
public String getBname() {
return bname;
}
public void setBname(String bname) {
this.bname = bname == null ? null : bname.trim();
}
}
도서 번호,도서 이름 이라는 두 가지 속성 만 있 고 우리 의 수 요 는 도 서 를 얻 는 동시에 이 도서 가 속 한 모든 유형 을 얻 는 것 이기 때문에 우 리 는 도서 실체 류 에 도서 유형의 집합 을 추가 하 는 것 을 고려 할 수 있다.수 정 된 도서 실체 류 는 다음 과 같다.
public class Book {
private Integer bid;
private String bname;
private List<Category> categories;
public Integer getBid() {
return bid;
}
public void setBid(Integer bid) {
this.bid = bid;
}
public String getBname() {
return bname;
}
public void setBname(String bname) {
this.bname = bname == null ? null : bname.trim();
}
public List<Category> getCategories() {
return categories;
}
public void setCategories(List<Category> categories) {
this.categories = categories;
}
}
다음은 SQL 문 구 를 작성 하고 연결 조회 로 모든 도서 와 도서 유형 을 찾 아 보 겠 습 니 다.
select
*
from
book b
inner join
middle m
on
b.bid=m.m_bid
inner join
category c
on
m.m_cid=c.cid
실행 결 과 는 다음 과 같이 모든 도서 와 이 도서 의 유형 을 완벽 하 게 보 여 준다.다음은 XML 맵 파일 에서 손발 을 움 직 여 우리 가 원 하 는 대로 도서 실체 류 에 자동 으로 채 울 수 있 도록 합 니 다.
이것 은 중점 을 강조 하기 위해 도서 의 맵 파일 과 DAO 인 터 페 이 스 를 비 웁 니 다.비 운 후에 다음 과 같 습 니 다.
<?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 namespace="com.mybatis.dao.BookMapper" >
<select id="queryAll">
</select>
</mapper>
public interface BookMapper {
List<Book> queryAll();
}
비 운 후에 우 리 는 쓰기 시 작 했 습 니 다.결 과 는 다음 과 같 습 니 다.
<?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 namespace="com.mybatis.dao.BookMapper" >
<resultMap type="com.mybatis.entity.Book" id="bookMap">
<id property="bid" column="bid" />
<result property="bname" column="bname" />
<collection property="categories" ofType="com.mybatis.entity.Category">
<id property="cid" column="cid" />
<result property="cname" column="cname" />
</collection>
</resultMap>
<select id="queryAll" resultMap="bookMap">
select
*
from
book b
inner join
middle m
on
b.bid=m.m_bid
inner join
category c
on
m.m_cid=c.cid
</select>
</mapper>
마지막 으로 main 방법 테스트 를 작성 하 겠 습 니 다.
public class MyMain {
public static void main(String[] args) throws IOException {
String resource = "mybatis-config.xml";
Reader reader = Resources.getResourceAsReader(resource);
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(reader);
SqlSession session = factory.openSession();
BookMapper bookMapper = session.getMapper(BookMapper.class);
for (Book book : bookMapper.queryAll()) {
System.out.print("["+book.getBname()+"]");
for(Category category :book.getCategories()){
System.out.print(category.getCname()+"\t");
}
System.out.println("
");
}
}
}
테스트 결 과 는 아래 그림 과 같다.모든 도서 와 대응 하 는 도서 유형 을 성공 적 으로 출력 하 였 다.
전체 항목 다운로드:다운로드 클릭
이상 은 본 고의 모든 내용 입 니 다.본 고의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 도움 이 되 기 를 바 랍 니 다.또한 저 희 를 많이 지지 해 주시 기 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
MyBatis + SpringBoot로 CRUD 앱 만들기 ※ 불필요한 것은 배 ※ 1/2MyBatis를 사용하여 ToDo 목록을 만듭니다. 할 일 등록 (블랭크를 등록 할 수 없음) 할 일보기 할 일 변경 할 일 지우기 SpringBoot의 CRUD가 가능한 책은 있지만 MyBatis를 사용한 것은 적...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.