Spring

Java Spring_ @Mapping

검은고양이개발자 2023. 3. 5. 16:25
반응형

@Mapping 어노테이션은 MapStruct를 사용하여 자동으로 DTO와 Entity 객체를 매핑해 줄 때 사용되는 어노테이션 중 하나입니다.

@Mapping은 각 매핑 대상에 대한 정보를 제공하여 매핑 프로세스를 구성하며 다음과 같은 속성을 갖습니다.

 

  • source : 매핑되는 객체에서 가져올 속성 이름입니다.
  • target : 매핑 대상 객체의 속성 이름입니다.
  • dateFormat : 날짜 형식을 변경하는 데 사용됩니다.
  • qualifiedByName : 매핑에 사용할 메소드 이름을 지정합니다.
  • ignore : 매핑을 무시합니다.
  • defaultValue : 매핑 대상 객체의 속성 값이 null일 때 기본값을 설정합니다.

 

예를 들어, 다음과 같은 객체가 있다고 가정해 봅시다.

 

public class SourceObject {
    private Long id;
    private String name;
    private int age;
}

public class TargetObject {
    private Long id;
    private String username;
    private int userAge;
}
 

 

위에서 선언한 SourceObject와 TargetObject의 필드 중 일부가 이름이 다르기 때문에,

MapStruct를 사용하여 이를 매핑하려면 다음과 같은 어노테이션을 사용할 수 있습니다.

 

@Mapper
public interface ObjectMapper {
    @Mapping(source = "id", target = "id")
    @Mapping(source = "name", target = "username")
    @Mapping(source = "age", target = "userAge")
    TargetObject mapToTargetObject(SourceObject source);
}

 

위의 예제에서 @Mapping 어노테이션은 SourceObject와 TargetObject의 필드 간 매핑을 수행하는 데 사용됩니다.

source는 매핑할 소스 객체의 필드 이름을 지정하고, target은 매핑될 대상 객체의 필드 이름을 지정합니다.

또한 @Mapping 어노테이션을 사용하여 객체 간의 매핑 시, 다른 이름을 가진 필드를 매핑할 수 있습니다.

이를 위해서는 source와 target에 해당하는 필드 이름을 각각 지정해 주면 됩니다.

 

 

반응형