我是靠谱客的博主 可爱自行车,最近开发中收集的这篇文章主要介绍modelMapper.map的一个使用例子,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

先上modelMapper.map的中文翻译:(百度自动翻译)
应用通常由相似但不同的对象模型组成,其中两个模型中的数据可能相似,但模型的结构和关注点不同。对象映射使将一个模型转换为另一个模型变得容易,从而允许单独的模型保持隔离。

ModelMapper 的目标是通过自动确定一个对象模型如何根据惯例以与人类相同的方式映射到另一个对象模型来简化对象映射,同时提供一个简单、重构安全的 API 来处理特定的使用案例。

ModelMapper 分析对象模型,以便智能地确定应如何映射数据。无需手动映射。ModelMapper 为您完成大部分工作,自动投影和平整复杂的模型。
您可以使用方法引用来匹配源获取器和目标设置器来定义属性映射。

typeMap.addMapping(Source::getFirstName, Destination::setName);

此示例将目标类型的方法映射到源类型的方法层次结构,从而允许源和目标方法之间发生深度映射:

setAgegetCustomer().getAge()
typeMap.addMapping(src -> src.getCustomer().getAge(), PersonDTO::setAge);

此示例将目的地类型的方法层次结构映射到源类型的属性层次

结构:getCustomer().setName()person.getFirstName()
typeMap.addMapping(src -> src.getPerson().getFirstName(), (dest, v) -> dest.getCustomer().setName(v));

官网其余部分就不复制了,自动翻译的也很烂。。

一个使用的例子:

public class PageInfoHelper {
public static <T, J> PageInfo<J> copyMap(PageInfo<T> source, Function<? super T, ? extends J> mapper) {
PageInfo<J> newPage = new PageInfo<>();
newPage.setPageNum(source.getPageNum());
newPage.setPageSize(source.getPageSize());
newPage.setSize(source.getSize());
newPage.setStartRow(source.getStartRow());
newPage.setEndRow(source.getEndRow());
newPage.setTotal(source.getTotal());
newPage.setPages(source.getPages());
newPage.setList(source.getList().stream().map(mapper).collect(Collectors.toList()));
newPage.setPrePage(source.getPrePage());
newPage.setNextPage(source.getNextPage());
newPage.setIsFirstPage(source.isIsFirstPage());
newPage.setIsLastPage(source.isIsLastPage());
newPage.setHasPreviousPage(source.isHasPreviousPage());
newPage.setHasNextPage(source.isHasNextPage());
newPage.setNavigatePages(source.getNavigatePages());
newPage.setNavigatepageNums(source.getNavigatepageNums());
newPage.setNavigateFirstPage(source.getNavigateFirstPage());
newPage.setNavigateLastPage(source.getNavigateLastPage());
return newPage;
}
}

@RequestMapping(value = "/event/page/list", method = RequestMethod.POST)
public RestResponse<PageInfo<UserEventLogVM>> eventPageList(@RequestBody UserEventPageRequestVM model) {
PageInfo<UserEventLog> pageInfo = userEventLogService.page(model);
PageInfo<UserEventLogVM> page = PageInfoHelper.copyMap(pageInfo, d -> {
UserEventLogVM vm = modelMapper.map(d, UserEventLogVM.class);
vm.setCreateTime(DateTimeUtil.dateFormat(d.getCreateTime()));
return vm;
});
return RestResponse.ok(page);
}

其中用到的地方是:

PageInfoHelper.copyMap(pageInfo, d -> {
UserEventLogVM vm = modelMapper.map(d, UserEventLogVM.class);
vm.setCreateTime(DateTimeUtil.dateFormat(d.getCreateTime()));
return vm;
});

最后

以上就是可爱自行车为你收集整理的modelMapper.map的一个使用例子的全部内容,希望文章能够帮你解决modelMapper.map的一个使用例子所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(43)

评论列表共有 0 条评论

立即
投稿
返回
顶部