gpt4 book ai didi

modelmapper - 如何在 map 阶段跳过字段?

转载 作者:行者123 更新时间:2023-12-01 11:25:29 25 4
gpt4 key购买 nike

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

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

  • 在少数情况下,我需要从 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);

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

    最佳答案

    看看官方user manual条件映射。
    简单来说:
    您需要添加一个新的映射并使用条件。您的来源和目的地是:

  • 来源:员工
  • 目的地: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上面的例子
  • 关于modelmapper - 如何在 map 阶段跳过字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37698527/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com