【发布时间】:2021-11-28 09:34:15
【问题描述】:
如何使用 MapStruct 创建一个映射器,该映射器从包含一个对象列表和一个对象列表的模型实体映射到域实体,仅包含嵌套对象列表。 p>
我的模型实体列表对象 = SourceObject-A;
我的模型实体第二个对象 = SourceObject-B;
我的域实体列表对象 = TargetObject-AB;
我的源类如下所示:
SourceObject-A:
@NoArgsConstructor
@AllArgsConstructor
@Data
public class User {
private int id;
private String name;
}
SourceObject-B:
@NoArgsConstructor
@AllArgsConstructor
@Data
public class CountryDetails {
private String country;
private String countryCode;
}
所以我需要把它转换成this(TargetObject-AB):
@NoArgsConstructor
@AllArgsConstructor
@Data
public class DomainUser {
private int id;
private String name;
private String country;
private String countryCode;
}
用户控制器:
GetMapping("/users")
public List<DomainUser> getDUsers(List<User> usersList, CountryDetails countryDetails){
List<DomainUser> domainUsersList=ModelToDomainMapper.INSTANCE.UserToDUser(usersList,
countryDetails);
return domainUsersList;
}
映射器接口:
@Mapper
public interface ModelToDomainMapper {
ModelToDomainMapper INSTANCE = Mappers.getMapper(ModelToDomainMapper.class)
List<DomainUser> UserToDUser(List<User> users, CountryDetails countryDetails);
}
预期的样本 json:
来源(输入):
[
"countryDetails":{
"country" : "India",
"countryCode" : "+91"
},
"userslist" :[
{
"id" : 1,
"name" : "XXXXXXX"
},
{
"id" : 2,
"name" : "XXXXXXX"
}
]
]
目标(预期输出):
[
{
"id": 1,
"name": "xxxxxx",
"country": "India",
"countryCode": "+91"
},
{
"id": 2,
"name": "xxxxxx",
"country": "India",
"countryCode": "+91"
}
]
有什么办法可以得到上面的输出,请帮帮我。
【问题讨论】:
-
据我所知,mapstruct 将一个类转换为另一个类,但不合并它。您可以使用构造函数来创建两个类的联合
标签: java spring-boot mapstruct