[MYBATIS] JOIN 관계 매핑

h220101·2022년 7월 26일
1
post-thumbnail
post-custom-banner

참고사이트 : mybatis

fetchSize

: select 엘리먼트 속성
: 조회 시 한번에 읽을 수 있는 레코드 수 조정
ex) fetchSize default 10 -> 1000, 2000개 레코드 조회 시 2번 읽음

id

구분자 역할을 하는 속성 (기본키 PK)

result

테이블 컬럼, FK (컬럼 -> 프로퍼티(객체)에 매핑)

property

자바의 속성명, 결과 컬럼에 매핑하기 위한 DTO의 필드나 프로퍼티

column

데이터베이스의 칼럼명이나 별칭된 칼럼 라벨

javaType

자바의 자료형, 패키지경로를 포함한 클래스 전체명이거나, 타입 별칭

jdbcType

지원되는 타입 목록에서 설명하는 JDBC 타입

select

다른 매핍된 구문의 ID는 이 프로퍼티 매핑이 필요로 하는 복잡한 타입을 로드

resultMap

복잡한 결과매핑을 할 때 사용한다.
-id : 구분자 역할을 하는 속성, 아이디 (기본키 PK)
-result : 테이블의 일반속성, 외래키 FK (property 객체 매핑)
-type : resultMap의 자료형


ASSOCIATION (has-one)

복잡한 타입의 연관관계
association 엘리먼트는 has-one 타입의 관계이다.

has-one 1:1 관계
ex)
-시험지를 푸는 학생은 1명이다.
(해당 시험지를 조회하면서 그 1명의 학생을 조회한다.)

자바 bean 파일의 property: 조인 객체 명 ,
javatype: 조인 객체의 자료형이 일치


COLLECTION (has-many)

복잡한 타입의 컬렉션
collection 엘리먼트는 has-many 타입의 관계이다.

has-many 1:N 관계
ex)
-하나의 시험지에서 여러 문항을 얻어온다. (1:N 관계)


자바 bean 파일의 property: 조인 객체 명 ,
ofType: collection의 자료형 (제네릭)이 일치

-> 1개의 아이디에는 N개의 Goods가 존재한다.


memberInfoList (회원상세목록) 실습


작업 순서
1. Member.java
2. MemberMapper.xml
3. MemberMapper.java
4. MemberService.java
5. header.html
6. MemberController.java
7. memberInfoList.html


  1. Member.java
    -MemberLevel(등급)을 1:N 관계로 가져온다.
    +toString 추가
    -MemberLevel의 속성을 levelInfo 객체참조변수명을 이용해서 바인딩 한다. (resultMap 이용)

  2. MemberMapper.xml
    -association 추가
    -select 쿼리문 추가


-> 회원상세리스트에 등급숫자,이름,등록날짜를 불러오기 위해 멤버테이블과 등급테이블을 조인하여
참조된 등급테이블의 PK와 참조하는 멤버테이블의 FK의 값을 비교하고 회원아이디 순으로 정렬한다.

(ORDER BY 기본 값 - ASC, 알파벳&숫자 순으로 정렬)


  1. MemberMapper.java
    -public List getMemberInfoList();
    -회원목록 조회 (복잡한 결과맵핑 has-one 관계 : association)

  2. MemberService.java
  1. header.html
    -경로 추가
  1. MemberController.java
    -코드 작성
  2. memberInfoList.html
    -뷰 페이지 작성
profile
기록하는 삶
post-custom-banner

0개의 댓글