Mapstruct:更新集合中的各个模型

时间:2017-11-13 12:16:40

标签: java collections java-8 mapstruct

我正在尝试使用mapstruct更新集合:

List<Passenger> updatePassengers(@MappingTarget List<Passenger> passengers, List<Passenger> sourcePassenger);
Passenger updatePassenger(@MappingTarget Passenger passenger, Passenger sourcePassenger);

现在在生成的源中生成updatePassenger方法如下:

public List<Passenger> updatePassengers(List<Passenger> passengers, List<Passenger> sourcePassenger) {
    if ( sourcePassenger == null ) {
        return null;
    }

    passengers.clear();
    for ( Passenger passenger : sourcePassenger ) {
        passengers.add( passenger );
    }

    return passengers;
}

这里将乘客从目的地移走并从乘客那里设置乘客。我想更新单个乘客对象。

我浏览了mapstruct文档,并说它在更新前清除了收藏。

maptruct是否可以为每位乘客调用updatePassenger方法?

1 个答案:

答案 0 :(得分:0)

如果您不想使用MapStruct的默认行为,您应该编写自己的自定义方法来执行更新。

int days = countDays(day, month, daysInMonth);
char *c[] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};

printf("There are %d days; day of the week: %s \n", days, c[(days - 1) % 7]);

最重要的是,MapStruct无法生成您需要的代码,因为它不知道哪个乘客应该与哪个乘客相关联。

在您的定义中,您说您希望使用default List<Passenger updatePassengers(List<Passenger> passenger, Lit<Passenger> sourcePassengers) { //Do your logic here } 列表更新passenger列表。