我是MapStruct的新手,因此需要一些帮助。

我有一个Source类,带有一个属性

Object input;


在运行时,它将返回一个名为TicketDetails的自定义对象。

现在,在我的目标类中有一个名为

MyTicket myTicket;


我需要使用TicketDetails对象的属性进行映射。
为了更好地理解,我在下面编写普通的Java代码示例。

SourceClassModel sourceClassModel = new SourceClassModel();
TargetClassModel targetClassModel = new TargetClassModel();

//mapping
TicketDetails ticketDetails = (TicketDetails) sourceClassModel.getInput();
targetClassModel.setMyTicket(ticketDetails.getMyTicket);


现在,我的问题是,如何使用MapStruct实现这种情况?

最佳答案

在使用的映射器上(请参见@Mapper#uses()),或者在映射器本身的非抽象方法中(如果它是抽象类而不是接口),请自己定义从ObjectTicketDetails的映射:

TicketDetails asTicketDetails(Object details) {
    return (TicketDetails) details;
}


然后,生成的用于将SourceClassModel转换为TargetClassModel的方法将调用该手动编写的方法来转换myTicket属性。

08-05 07:32