MyBatis에서 단순 조회는 resultType으로 충분해 보이지만, JOIN을 붙인 순간 필드가 null로 들어오거나 같은 부모 객체가 여러 번 생기는 문제가 나온다. 이때 먼저 확인할 것은 조회 결과 구조가 단순 객체인지, 중첩 객체나 리스트인지다.결론부터 말하면 단일 테이블의 평평한 결과는 resultType, 컬럼명이 다르거나 JOIN 결과를 객체 안 객체 또는 리스트로 묶어야 하면 resultMap을 쓰는 편이 맞다. 특히 1:N 조회에서는 collection과 id 태그를 제대로 잡지 않으면 중복 행을 객체 구조로 묶기 어렵다.핵심 결론: resultType은 자동 매핑이고, resultMap은 결과를 어떻게 객체로 조립할지 직접 정의하는 매핑 설계도다.확인 순서: 단일 테이블인가 → 컬럼명..
Categories
resultMap 3
Mapper 인터페이스는 있는데 SQL을 못 찾거나 resultType 필드가 null이면, 먼저 mybatis-config.xml과 Mapper XML의 책임부터 나눠야 한다. 파일 역할을 구분해야 설정 위치와 오류 원인을 빠르게 좁힐 수 있다.핵심은 두 XML의 책임을 먼저 나누는 것이다. mybatis-config.xml은 전체 동작 기준을 정하는 파일이고, UserMapper.xml 같은 Mapper XML은 실제 SQL과 결과 매핑을 담는 파일이다. 전역 설정은 mybatis-config.xml에 두고, SQL 문장과 resultMap은 Mapper XML에 둔다고 잡으면 대부분의 설정 흐름이 정리된다. Spring MyBatis에서는 여기에 SqlSessionFactoryBean의 config..
resultType과 resultMap, 무엇이 다른가MyBatis로 조회 쿼리를 작성하다 보면 결과를 어디에 담을지 지정해야 한다. 이때 쓰는 게 resultType과 resultMap이다. 둘 다 SELECT 결과를 자바 객체로 매핑한다는 점은 같지만, 매핑을 자동으로 맡기느냐 직접 정의하느냐에서 갈린다. 이 차이를 모르면 "분명 쿼리는 맞는데 일부 필드가 null로 들어오는" 상황에서 한참 헤매게 된다. MyBatis resultMap resultType 차이를 실무 기준으로 정리한다.간단히 말하면 resultType은 "결과를 이 타입에 알아서 담아라", resultMap은 "이 컬럼은 이 필드에 이렇게 담아라"를 직접 적어 주는 방식이다.차이 비교표 구분 result..