Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 백엔드
- 유효성검사
- 제로베이스
- 백엔드공부
- 데이터베이스 연동
- 백엔드스쿨
- 개발자
- spring
- Swagger
- 엔티티 설계
- 프로젝트 생성
- 스프링부트실전가이드
- Java
- auditing
- 제로베이스 #백엔드 #Java #Spring #개발자 #백엔드공부 #백엔드 스쿨
- DAO 설계
- DAO 연동 컨트롤러 서비스 설계
- validated
- 스프링 부트 핵심 가이드
- 인텔리제이
- JPA
- #devops #terraform #state
- ORM
- 리포지토리 인터페이스
- MariaDB
Archives
- Today
- Total
JeongJin's Blog
Mybatis collection 사용하기 본문
상세 조회 시 응답 데이터 생성 시 분산된 테이블에서 데이터를 가져온다고 하면 부모 테이블 조회 후 자식 테이블을 조회하는 mapper를 각각 만들어서 서비스 영역에서 요청 후 조립하여 생성하는 로직을 구현한 경험이 있으실 겁니다.
mybatis에서는 <resultMap> 태그 하위에 <collection> 태그를 이용하여 한꺼번에 데이터를 바인딩 할 수 있다.
<resultMap id="[resultMap 속성 아이디]" type="[반환할 도메인 클래스]">
<result property="[도메인 클래스 변수명]" column="[테이블 컬럼명]" />
...
<collection property="[도메인 클래스 변수명]"
column="[select 조회 조건 변수명]"
select="[쿼리명]" />
...
</resultMap>
// 예시
<select id="getEdoc" resultMap="edocMap"></select>
<select id="getPropertyByEdocSeq" resultMap="propertyMap"></select>
<select id="getItemsByEdocSeq" resultMap="itemMap"></select>
<select id="getAttacheFilesByEdocSeq" resultMap="attachFileMap"></select>
<select id="getLinksByEdocSeq" resultMap="linkMap"></select>
// getEdoc 아이디의 resultMap 이 edocMap
<resultMap id="edocMap" type="com.knet.msa.edoc.edoc.domain.Edoc">
<id property="edocSeq" column="edocSeq" />
<result property="uuid" column="uuid" />
...
<collection property="properties" column="edocSeq" select="getPropertyByEdocSeq" />
<collection property="items" column="edocSeq" select="getItemsByEdocSeq" />
<collection property="attachFiles" column="edocSeq" select="getAttacheFilesByEdocSeq" />
<collection property="links" column="edocSeq" select="getLinksByEdocSeq" />
</resultMap>
// 클래스 예시
public class Edoc {
private Long edocSeq;
private String uuid;
// collection property
List<Property> properties;
List<Item> items;
List<AttachFile> attachFiles;
List<Link> links;
}
collection select 속성에 정의한 쿼리명 다른 테이블 조회 시 사용하며 xml에서 <select> 로 정의해서 사용한다.
이렇게 하면 분산 테이블을 각각 조회할 수 있어서 resultMap 에 데이터 바인딩이 가능하다.
주의할 점
1. collection column 에 정의하는 변수명은 resultMap 하위에 정의된 태크 property 명을 정의 해야 한다.
'백엔드 > Mybatis' 카테고리의 다른 글
org.springframework.jdbc.UncategorizedSQLException 발생 시 (0) | 2024.05.03 |
---|---|
jdbc type (0) | 2024.04.08 |
Mybatis PK 추출 방법 (0) | 2024.01.15 |
MyBatis 사용 시 Bulk insert 시 PK 추출 주의할 사항 (0) | 2024.01.12 |
MyBatis 사용 시 Entity 에서 lombok 사용 시 주의 할 점 (0) | 2024.01.05 |