-
MapStruct 의 @Mapper 사용에 대해 알아보자!Server/Spring Boot 2025. 4. 16. 11:37728x90반응형
🛠️ Mapper 인터페이스 작성 & 사용 예제
1. Entity, DTO 클래스 예시
// User 엔티티 public class User { private Long id; private String username; private String email; // getter/setter 생략 }
// UserDto public class UserDto { private String username; private String email; // getter/setter 생략 }
2. Mapper 인터페이스 작성
import org.mapstruct.Mapper; import org.mapstruct.Mapping; @Mapper(componentModel = "spring") public interface UserMapper { // Entity → DTO UserDto toDto(User user); // DTO → Entity User toEntity(UserDto userDto); }
✅ Tip: 이름이 같은 필드는 자동 매핑됩니다.
이름이 다르거나 변환 로직이 필요할 경우@Mapping
어노테이션을 사용하세요.3. 실제 사용 예제 (Service 계층)
@Service public class UserService { private final UserRepository userRepository; private final UserMapper userMapper; public UserService(UserRepository userRepository, UserMapper userMapper) { this.userRepository = userRepository; this.userMapper = userMapper; } public UserDto getUserDtoById(Long id) { User user = userRepository.findById(id) .orElseThrow(() -> new RuntimeException("사용자 없음")); return userMapper.toDto(user); } public void saveUser(UserDto userDto) { User user = userMapper.toEntity(userDto); userRepository.save(user); } }
🧩 @Mapper 주요 속성 설명
속성명 설명 componentModel
spring
,jsr330
,cdi
,default
중 선택.
Spring Bean으로 등록하고 싶다면spring
사용.uses
다른 Mapper를 내부적으로 사용하는 경우 명시.
예:@Mapper(uses = AddressMapper.class)
imports
static 메서드 등을 매핑에 활용하기 위해 클래스 import 가능. unmappedTargetPolicy
매핑되지 않은 필드에 대한 경고 설정. IGNORE
,WARN
,ERROR
가능.nullValueMappingStrategy
null 값 처리 방식 지정. RETURN_NULL
,RETURN_DEFAULT
등 사용 가능.
💡 추가 팁
- 컴파일 시 자동으로
UserMapperImpl
클래스가 생성됩니다. @Mapping
어노테이션을 활용하면 필드명이 다른 경우도 쉽게 매핑할 수 있습니다.- 리스트 매핑도 아래처럼 쉽게 작성 가능해요:
List<UserDto> toDtoList(List<User> users);
728x90반응형'Server > Spring Boot' 카테고리의 다른 글
MapStruct 의 다양한 사용에 대해 알아보자 (0) 2025.04.16 MapStruct 의 @Mapping 사용 방법을 알아보자! (1) 2025.04.16 [Springboot] 엔티티와 DTO 간 변환시 MapStruct 사용해야 하는 이유? (0) 2025.04.16 [Springboot] 외부 HTTP 호출 Retry와 재처리 전략 (1) 2025.04.15 Springboot Timezone(타임존) 에 대해 알아보자! (1) 2025.04.15 - 컴파일 시 자동으로