ModelMapper는 특정 Object에 있는 필드값들을 자동으로 원하는 Object로 Mappring 시켜주는 역할을 한다.
implementation group: 'org.modelmapper', name: 'modelmapper', version: '2.4.2'
@Configuration
public class AppConfig {
@Bean
public ModelMapper modelMapper() {
return new ModelMapper();
}
}
@Service
@RequiredArgsConstructor
@Transacctional
public class MemberService {
private final ModelMapper modelMapper;
public void updateMember(Member member, MemberDto memberDto) {
member.setAge(memberDto.getAge);
member.setName(memberDto.getName);
member.setAddress(memberDto.getAddress);
}
}
@Service
@RequiredArgsConstructor
@Transacctional
public class MemberService {
private final ModelMapper modelMapper;
public void updateMember(Member member, MemberDto memberDto) {
modelMapper.map(memberDto, member)
}
}
source 필드명과 destination의 필드명이 다를 때, 예를 들어 source는 camelCase, destination은 under_score 형태일 때 아래와 같이 설정하여 매핑할 수 있다.
@Configuration
public class AppConfig {
@Bean
public ModelMapper modelMapper() {
ModelMapper modelMapper = new ModelMapper();
modelMapper.getConfiguration()
.setSourceNameTokenizer(NameTokenizers.CAMEL_CASE)
.setDestinationNameTokenizer(NameTokenizers.UNDERSCORE);
return modelMapper;
}
}