使用推土机映射对象列表

2022-09-04 07:37:22

我为A类到B类创建了一个推土机映射。

现在我想将 a 映射到 .List<ClassA>List<ClassB>

有没有可能只是

mapper.map(variableListClassA, variableListClassB) 

或者我必须经过一个循环,例如

for (ClassA classA : variableListClassA) {
    variableListClassB.add(mapper.map(classA, ClassB.class))
}

答案 1

您需要使用循环,因为列表的类型在运行时会被擦除。

如果两个列表都是一个类的字段,则可以映射所属的类。


答案 2

你也可以使用A帮助器类在一个步骤中做到这一点

public class DozerHelper {

    public static <T, U> ArrayList<U> map(final Mapper mapper, final List<T> source, final Class<U> destType) {

        final ArrayList<U> dest = new ArrayList<U>();

        for (T element : source) {
        if (element == null) {
            continue;
        }
        dest.add(mapper.map(element, destType));
    }

    // finally remove all null values if any
    List s1 = new ArrayList();
    s1.add(null);
    dest.removeAll(s1);

    return dest;
}
}

你上面的电话会像

List<ClassB> listB = DozerHelper.map(mapper, variableListClassA, ClassB.class);

推荐