mapstruct:使用mapstruct将对象数组转换为对象列表

时间:2018-07-20 13:48:00

标签: java mapstruct

我上课

public class A {

Person[] getPersons() { .. }

}

public class B {

List<Person> getPersons() { .. }

}

我有Mapper可以将A转换为B,

@Mapper
public interface AMapper {
    AMapperINSTANCE = Mappers.getMapper(AMapper.class);

    B AtoB(A entity);

}

在映射时,如何将人员数组转换为人员列表?

2 个答案:

答案 0 :(得分:0)

使用java.util.Arrays包中的静态方法(1, ', ', 0, ', ', 3)

示例:

Array.asList(T...a)

输出:

class Person {
    private String name;

    Person(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                '}';
    }
}
@Test
public void arrayToList() {
    Person[] persons = {new Person("Yasuo"),new Person("Jinx")};

    List<Person> personList = Arrays.asList(persons);

    System.out.println(personList);
}

答案 1 :(得分:0)

MapStruct自动创建用于在数组和List之间进行映射的中间方法。

您定义的内容:

public interface AMapper {
    AMapperINSTANCE = Mappers.getMapper(AMapper.class);

    B AtoB(A entity);

}

应生成:

public class AMapperImpl implements AMapper {

    @Override
    public B AtoB(A entity) {
        if ( entity == null ) {
            return null;
        }

        B b = new B();

        b.setPersons( personArrayToPersonList( entity.getPersons() ) );

        return b;
    }

    protected List<Person> personArrayToPersonList(Person[] personArray) {
        if ( personArray == null ) {
            return null;
        }

        List<Person> list = new ArrayList<Person>( personArray.length );
        for ( Person person : personArray ) {
            list.add( person );
        }

        return list;
    }
}

说了这么多。您应该确保班级人员的吸气剂/吸气剂是公开的。 MapStruct是一个注释处理工具,可以生成Java代码并且不进行反射