MapStruct에 이런 기능이 있었는데 혹시 알고 계셨나요? (Enum to Enum Automatically) #63
-
당장 찾아보는 건 아니지만, 어떻게 이렇게 가능한지도 궁금하고,
protected BoardStatus toDomainStatus(BoardEntityStatus boardEntityStatus) {
if ( boardEntityStatus == null ) {
return null;
}
BoardStatus boardStatus;
switch ( boardEntityStatus ) {
case REMOVED: boardStatus = BoardStatus.REMOVED;
break;
case PENDING: boardStatus = BoardStatus.PENDING;
break;
case ACTIVE: boardStatus = BoardStatus.ACTIVE;
break;
case SUSPENDED: boardStatus = BoardStatus.SUSPENDED;
break;
default: throw new IllegalArgumentException( "Unexpected enum constant: " + boardEntityStatus );
}
return boardStatus;
}
protected BoardEntityStatus toEntityStatus(BoardStatus boardStatus) {
if ( boardStatus == null ) {
return null;
}
BoardEntityStatus boardEntityStatus;
switch ( boardStatus ) {
case PENDING: boardEntityStatus = BoardEntityStatus.PENDING;
break;
case ACTIVE: boardEntityStatus = BoardEntityStatus.ACTIVE;
break;
case SUSPENDED: boardEntityStatus = BoardEntityStatus.SUSPENDED;
break;
case REMOVED: boardEntityStatus = BoardEntityStatus.REMOVED;
break;
default: throw new IllegalArgumentException( "Unexpected enum constant: " + boardStatus );
}
return boardEntityStatus;
} 추가적으로 MapStruct를 찾아보신 내용 중에 공유할 만한 내용이 있다면 공유해 주세요~ |
Beta Was this translation helpful? Give feedback.
Replies: 2 comments 1 reply
-
1) MapStruct 매핑MapStruct는 기본적으로 타입과 변수명이 같은 경우 자동으로 매핑을 지원해주지만, 타입이 같지만 변수명이 다른 경우 아래와 같이 매핑할 수 있습니다
2) Enum 간의 매핑위와 같이 cf. 이전에 bfdc4e5 서 언급주신
3) 매핑 시 기본값 지정또한
4) 추가 기능이 밖에도 MapStruct 내에서 지원하는 기능들이 많아, 관련하여 추가 기능 구현이 필요하실 때 공식문서도 참고해 보면 좋을 것 같습니다! 참고 |
Beta Was this translation helpful? Give feedback.
-
MapStruct 라이브러리가 참 똑똑하게 잘 만든 것 같네요! 그렇지만 MapStruct도 저희가 알고 있는 의도와 다르게 작동할 수 있다는 생각이 들어요! 🤔 어찌 보면 남이 해준 매핑이니 신경써보는 것도 좋을 것 같네요! |
Beta Was this translation helpful? Give feedback.
1) MapStruct 매핑
MapStruct는 기본적으로 타입과 변수명이 같은 경우 자동으로 매핑을 지원해주지만, 타입이 같지만 변수명이 다른 경우 아래와 같이 매핑할 수 있습니다
2) Enum 간의 매핑
위와 같이
@Mapping
어노테이션은 일반적인 객체 필드 간의 매핑은 가능하지만, Enum 간의 매핑에는 적용되지 않아@ValueMapping
어노테이션을 사용할 수 있습니다.cf. 이전에 bfdc4e5 서 언급주신
@Named + qualifiedByName
과, MapStruct 1.2(?) 버전부터 사용이 가능한@EnumMapping
을 이용한 매핑도 가능합니다.