如何在地图阶段跳过某个字段?

2023-12-31

我有员工对象列表 - 列表 我需要将其转换为员工调动对象列表 - List

假设两个类中都存在“密码”字段。

  • 在少数情况下,我需要包含来自 Employee → EmployeeDTO 的密码
  • 在少数情况下,我不需要密码并且希望被排除在 Employee - EmployeeDTO 之外。

示例代码片段:

    List<Employee> employees = employeeRepository.findAll();
    // Define the target type
    Type targetListType = new TypeToken<List<EmployeeDTO>>() {}.getType();
    List<EmployeeDTO> employeeDTOs = modelMapper.map(employees, targetListType);

请让我知道如何跳过映射/复制字段。


看看官方的用户手册 http://modelmapper.org/user-manual/property-mapping/#conditional-mapping条件映射。

简单来说:

您需要添加新的映射并使用条件。您的来源和目的地将是:

  • 来源:员工
  • 目的地: EmployeeDto

首先创建并自定义您的条件。它会是这样的:

Condition<?, ?> isNotZero = new Condition<PersonDTO, Employee>() {
    public boolean applies(MappingContext<PersonDTO, Employee> context) {
      //Your conidition
      return context.getSource().getEmployeeId() != 0;
    }
  };

然后添加Mapping并使用条件:

modelMapper.addMappings(new PropertyMap<PersonDTO, Person>() {
      protected void configure() {
        when(isNotZero).map(source).setEmployee(null);
      }
    });

您可以在 ModelMapper GitHub 存储库中找到此示例。作者还做了一些,并且解释得很好:

  • Link https://github.com/jhalterman/modelmapper/blob/2f5ee77beaaee8efb2188f2c8afa88b9dbbc0649/core/src/test/java/org/modelmapper/functional/conditional/ConditionalMapping2.java对于上面的例子
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在地图阶段跳过某个字段? 的相关文章

  • xcode 6 对象库为空(没有匹配项)

    我正在尝试按照说明创建 Hello World 但我的对象库中似乎没有任何内容 它只是在对话框中显示 没有匹配项 我在这里缺少什么 谢谢 我发现了一个解决方案 当我在助理编辑器中编辑情节提要时 就发生了这种情况 我关闭了助理编辑器并在主编辑
  • Javascript:从外部 CSS 文件中删除媒体查询

    如何删除从外部 css 文件加载的媒体查询 请注意 我无法禁用整个链接标记 因为该媒体查询中包含其他重要样式 body container media min width XXXpx 谢谢你 我强烈推荐纯 CSS 解决方案来解决这个问题 例
  • 如何删除应用程序快捷方式图标中的徽章?

    How to remove the badge in app shortcut icon in android When i create app shortcut programmatically along with the icon
  • Boost Asio async_wait 处理程序

    升压asiodeadline timer async wait函数正在采用以下形式的处理程序 void handler const boost system error code error 我如何定义一个处理程序来接收const boos
  • 为什么要创建自定义异常? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 为什么我们需要创建自定义异常 NET 特定的自定义异常允许您为 catch 语句隔离不同的错误类型 异常处理的常见结构是这样的 try catc
  • 类似热图的图,但适用于分类变量

    我为大约 50 个人中的每一个设定了三个因子 集合 1 集合 2 和集合 3 set1 set2 和 set3 的值为 A B C 我想对这些数据制作一个类似热图的图 但让图例显示与值相关的颜色 例如 A 红色 B 蓝色 C 黑色 有什么建
  • 单独的 js 文件中的 getElementById 找不到 ASP.net 控件

    当我在页面标记中有这个时 它工作正常 但是当我在一个单独的文件中有相同的东西时 即使该函数is已执行 的值v遗迹null 我尝试用一 个简单的div and it did找出div 为什么找不到 ASP net 按钮 EDIT 我什至添加了
  • Doctrine2:使用左连接/分页进行限制 - 最佳实践

    我有一个大查询 在我的查询生成器中 和很多左连接 所以我得到带有评论和标签等的文章 假设我有以下 dql dql SELECT blogpost comment tags FROM BlogPost blogpost LEFT JOIN b
  • HttpContext.User.Claims 与 JWT 令牌不匹配 - “Sub”更改为“NameIdentifier”

    我遇到以下情况 非常感谢任何帮助 我在用户界面 Blazor 服务器应用程序 中使用 JSON Web 令牌 jwtbearer 进行身份验证和授权 以访问我的 Web API Asp net core 5 0 我尝试从通过 UserId

随机推荐