📅  最后修改于: 2022-03-11 14:59:57.227000             🧑  作者: Mango
public class ObjectMapperUtils {
private static ModelMapper modelMapper = new ModelMapper();
/**
* Model mapper property setting are specified in the following block.
* Default property matching strategy is set to Strict see {@link MatchingStrategies}
* Custom mappings are added using {@link ModelMapper#addMappings(PropertyMap)}
*/
static {
modelMapper = new ModelMapper();
modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT);
}
/**
* Hide from public usage.
*/
private ObjectMapperUtils() {
}
/**
* Note: outClass object must have default constructor with no arguments
*
* @param type of result object.
* @param type of source object to map from.
* @param entity entity that needs to be mapped.
* @param outClass class of result object.
* @return new object of outClass
type.
*/
public static D map(final T entity, Class outClass) {
return modelMapper.map(entity, outClass);
}
/**
* Note: outClass object must have default constructor with no arguments
*
* @param entityList list of entities that needs to be mapped
* @param outCLass class of result list element
* @param type of objects in result list
* @param type of entity in entityList
* @return list of mapped object with
type.
*/
public static List mapAll(final Collection entityList, Class outCLass) {
return entityList.stream()
.map(entity -> map(entity, outCLass))
.collect(Collectors.toList());
}
/**
* Maps {@code source} to {@code destination}.
*
* @param source object to map from
* @param destination object to map to
*/
public static D map(final S source, D destination) {
modelMapper.map(source, destination);
return destination;
}
}