【问题标题】:Modelmapper to convert objects: from Tuple to AnyClassModelmapper 转换对象:从 Tuple 到 AnyClass
【发布时间】:2021-05-18 20:31:15
【问题描述】:

我有一个返回 Tuple 类型对象的方法,其值是:类别类型 Category 和总类型 BigDecimal。

如何实现 modelMapper 方法以将 Tuple 映射到具有两个属性(category - 类型 Category 和 total - 类型 BigDecimal)的 Product 类型类?

如何实现这个方法,将n个值的Tuple对象转换成n个对应属性的任何其他对象?

List<Tuple>List <AnyClass>的情况下如何实现这个方法?

List<Tuple>List<Product> 的情况下,我有以下一段功能代码。它是不完整的,它只是映射第一个属性,在类别的情况下。

注意:productsTuple 是从存储库返回的 List<Tuple> 对象类型。

List<Product> products = productsTuple
            .stream()
            .map(p -> modelMapper.map(p.get(0), Produto.class))
            .collect(Collectors.toList());

【问题讨论】:

    标签: java tuples modelmapper


    【解决方案1】:

    你可以试试这个。 (已修复)

    List<Product> products = productsTuple
                .stream()
                .map(p -> {
                    Map<String, Object> maps = new HashMap<>();
                    p.getElements().forEach(te -> {
                        maps.put(te.getAlias(), p.get(te.getAlias()));
                    });
                    return modelMapper.map(maps, Product.class));
                })
                .collect(Collectors.toList());
    

    【讨论】:

    • 感谢您的想法。通过下面的修复,它起作用了。
    【解决方案2】:

    我认为有一个小的编译错误。此外,这仅在您设置别名时才有效。

    应该是

                List<Product> products = tupleResult
                        .stream()
                        .map(p -> {
                            Map<String, Object> maps = new HashMap<>();
                            p.getElements().forEach(te -> {
                                maps.put(te.getAlias(), p.get(te.getAlias()));
                            });
                            return modelMapper.map(maps, Product.class);
                        })
                        .collect(Collectors.toList());
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多