๊ฐ์ฒด ๊ฐ์ ๋งคํ์ ํธํ๊ฒ ํด์ฃผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค.
ํน์ง - ๋น ๋ฅด๋ค.
๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ชฉ๋ก
dependencies {
implementation 'org.mapstruct:mapstruct:1.4.2.Final'
annotationProcessor "org.mapstruct:mapstruct-processor:1.4.2.Final"
annotationProcessor 'org.projectlombok:lombok-mapstruct-binding:0.2.0'
compileOnly 'org.projectlombok:lombok:1.18.22'
annotationProcessor 'org.projectlombok:lombok:1.18.22'
}
public interface GenericMapper<D, E> {
D toDto(E e);
E toEntity(D d);
@BeanMapping(nullValuePropertyMappingStrategy = NullValuePropertyMappingStrategy.IGNORE)
E updateFromDto(D dto, @MappingTarget E entity);
}
@BeanMapping : ๋งคํ ์ ์ฑ ์ ์ค์ ํ๋ค.
@MappingTarget : ๋ณํํ์ฌ ๊ฐ์ฒด๋ฅผ return ํ๋๊ฒ ์๋ ๋งค๊ฐ๋ณ์๋ก ๋ฐ์ ์ ๋ฐ์ดํธํ Target์ ์ค์ ํ๋ค.
@Mapper(componentModel = "spring")
public interface CustomMapper extends GenericMapper<MemberDto, Member> {
}
componentModel = "spring" : spring์ ๋ง๊ฒ bean์ผ๋ก ๋ฑ๋กํด์ค๋ค.
๊ฐ์ฒด๋ง๋ค ๊ฐ๊ฐ ๋ค๋ฅธ ์์ฑ์ด ์กด์ฌํ ์ ์๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์ง์ ์ ํด์ค์ผ ํ๋ค.
Mapper๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด ์ฐ๋ ์ด๋ ธํ ์ด์ ์ด๋ค.
๊ฐ์ฒด ๊ฐ์ ๋งคํ์ ํ ๋ ์ฌ์ฉํ๋ ์ด๋ ธํ ์ด์ ์ด๋ค.
target : ๋งคํํ๋ ค๋ ๊ฐ์ฒด(๊ฒฐ๊ณผ)์ ํ๋๋ฅผ ์ง์ ํ๋ค.
source : ๋งคํ์ ์๋ํ๋ ๊ฐ์ฒด(์ ๋ ฅ)์ ํ๋๋ฅผ ์ง์ ํ๋ค.
constant : target์ ์ง์ ๋ ๊ฐ์ผ๋ก ๋งคํํ๋ค.
experssion : target ํ๋์ ํจ์๊ฐ์ ๋ฃ์ด์ค๋ค
ex) "java(memberDto.getName() + " is me")"
๋ฑ๋ฑ ๋ง์ ์ต์ ๋ค์ด ์๋ค. ์ธ๋งํ ์ต์ ๋ค์ด ๋ง์ด ๋ณด์ธ๋ค.
Source์ ํ๋๊ฐ Target์ ํ๋์ ๋งคํ๋์ง ์์์ ๋ ์ ์ฑ ์ด๋ค.
- IGNORE (default)
- WARN
- ERROR
ERROR๋ก ์ค์ ์ Source ํ๋๊ฐ ์ฌ์ฉ๋์ง ์์ผ๋ฉด ์ปดํ์ผ ์ค๋ฅ๊ฐ ์๊ธด๋ค.
Target์ ํ๋๊ฐ ๋งคํ๋์ง ์์ ๋ ์ ์ฑ ์ด๋ค.
- IGNORE
- WARN (default)
- ERROR
ERROR๋ก ์ค์ ์ Target ํ๋๊ฐ ์ฌ์ฉ๋์ง ์์ผ๋ฉด ์ปดํ์ผ ์ค๋ฅ๊ฐ ์๊ธด๋ค.
ํ์ ๋ณํ์ ์ ์ค์ด ๋ฐ์ํ ์ ์์ ๋ ์ ์ฑ ์ด๋ค.
- IGNORE (default)
- WARN
- ERROR
long์์ int๋ก ๊ฐ์ ๋๊ธธ๋ ์ ์ค์ด ๋ฐ์ํ ์ ์๋ค.
Source๊ฐ null์ผ ๋์ ์ ์ฑ ์ด๋ค.
- RETURN_NULL (default)
- RETURN_DEFAULT
Source์ ํ๋๊ฐ null์ผ ๋ ์ ์ฑ ์ด๋ค.
- SET_TO_NULL (default)
- SET_TO_DEFAULT
- IGNORE