我正在使用Spring MVC框架编写简单的博客Web应用程序。我愿意DTO为我的应用添加图层。
DTO
我决定使用ModelMapper框架从Entity对象转换为DTO视图中使用的对象。
Entity
我只有一个问题。在我的主页上,我正在显示博客中的帖子列表。在我看来,这只是Post(实体)对象的列表。我想更改它以将PostDTO对象列表传递给我的视图。有没有什么办法来映射List的Post对象List的PostDTO单方法调用的对象?我当时在考虑编写将对此进行转换的转换器,但是我不确定这是否是一个好方法。
Post
PostDTO
List
另外,我使用Lists的Entities在几个地方像我的网页上管理面板或评论每一个岗位的下方。
Lists
Entities
链接到GitHub存储库上我的应用程序的代码:存储库
您可以创建util类:
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() { } /** * <p>Note: outClass object must have default constructor with no arguments</p> * * @param <D> type of result object. * @param <T> 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 <code>outClass</code> type. */ public static <D, T> D map(final T entity, Class<D> outClass) { return modelMapper.map(entity, outClass); } /** * <p>Note: outClass object must have default constructor with no arguments</p> * * @param entityList list of entities that needs to be mapped * @param outCLass class of result list element * @param <D> type of objects in result list * @param <T> type of entity in <code>entityList</code> * @return list of mapped object with <code><D></code> type. */ public static <D, T> List<D> mapAll(final Collection<T> entityList, Class<D> 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 <S, D> D map(final S source, D destination) { modelMapper.map(source, destination); return destination; } }
并将其用于您的需求:
List<PostDTO> listOfPostDTO = ObjectMapperUtils.mapAll(listOfPosts, PostDTO.class);