<dependency>
<groupId>com.github.dozermapper</groupId>
<artifactId>dozer-spring-boot-starter</artifactId>
<version>6.4.1</version>
</dependency>
import com.github.dozermapper.core.Mapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.lang.NonNull;
import org.springframework.lang.Nullable;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
import java.util.Collections;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
/**
*
* dozer轉換類
*
*
*/
@Component
public class Dozer {
/**
* dozer轉換的核心mapper物件
*/
private static Mapper dozerMapper;
@Autowired
private Mapper mapper;
@PostConstruct
private void construct() {
Dozer.setDozerMapper(mapper);
}
private static void setDozerMapper(Mapper dozerMapper) {
Dozer.dozerMapper = dozerMapper;
}
/**
* 轉換實體為另一個指定的實體
* 任意一個引數為NULL時 會丟擲NPE
* {@link com.github.dozermapper.core.util.MappingValidator#validateMappingRequest}
*
* @param source 源實體 不能為NULL
* @param clazz 目標實體 不能為NULL
* @param <T> 泛型
* @return 轉換後的結果
*/
@NonNull
public static <T> T convert(@NonNull Object source, @NonNull Class<T> clazz) {
return dozerMapper.map(source, clazz);
}
/**
* 轉換List實體為另一個指定的實體
* source如果為NULL 會使用空集合
* 在目標實體為NULL時 會丟擲NPE
* {@link com.github.dozermapper.core.util.MappingValidator#validateMappingRequest}
*
* @param source 源集合 可以為NULL
* @param clazz 目標實體 不能為NULL
* @param <T> 泛型
* @return 轉換後的結果
*/
@Nullable
public static <T> List<T> convert(@Nullable List<?> source, @NonNull Class<T> clazz) {
return Optional.ofNullable(source)
.orElse(Collections.emptyList())
.stream()
.map(bean -> dozerMapper.map(bean, clazz))
.collect(Collectors.toList());
}
}