12

这可能很简单,但我在文档中找不到。我有一个人班

class BasicPerson {
   private String name;
   private int age;
   private Date birthDate;
   // getters/setters omitted
}

和它的清单

ArrayList<Person>

我想更改它们以将它们更改为

ArrayList<PersonDTO>

但没有明确的循环。有没有办法将 MapperFacade.map 用于列表以列出一行转换?

4

3 回答 3

16

它内置了这个功能。您是否尝试过使用该方法

List<D> ma.glasnost.orika.impl.ConfigurableMapper.mapAsList(Iterable<S> source, Class<D> destinationClass)?

我试图找到 Javadoc 的更新版本,但这里是 1.3.5 之一。当前版本是 1.4.5。 MapperFacade 类

于 2014-02-13T13:59:38.010 回答
1

如果使用该MapperFacade接口,Orika 可以对集合执行多次映射:

final MapperFacade mapperFacade = mapperFactory.getMapperFacade();
final List<Person> people = // Get the person instances
final List<PersonDto> personDtos = mapperFacade.mapAsList(people, PersonDto.class);

另一方面,如果你使用BoundMapperFacade接口,它不包含这样一个方便的方法。

最后,如果您选择使用该ConfigurableMapper方法,它还包括一个mapAsList实际上委托给该方法的MapperFacade.mapAsList方法。

于 2020-06-03T05:41:18.867 回答
-1
package com.miya.takeaway.common.util.orika;

import com.miya.takeaway.common.util.orika.converter.ConverterHelper;
import ma.glasnost.orika.MapperFactory;
import ma.glasnost.orika.converter.ConverterFactory;
import ma.glasnost.orika.impl.DefaultMapperFactory;
import ma.glasnost.orika.metadata.ClassMapBuilder;
import org.apache.commons.collections4.CollectionUtils;

import java.util.Collections;
import java.util.List;

public class OrikaUtils {

    private static MapperFactory mapperFactory = new DefaultMapperFactory.Builder().build();


    public static <T> List<T> map(List<?> objects, Class<T> target) {
        if (CollectionUtils.isEmpty(objects)) {
            return Collections.EMPTY_LIST;
        }
        return mapperFactory.getMapperFacade().mapAsList(objects.toArray(), target);
    }
}
于 2018-12-18T03:50:10.300 回答