如何使用MapSTRt创建映射器,从模型实体,包括一个对象列表和另一个对象到域实体,只包括嵌套对象的列表。
我的模型实体列表对象=SourceObject-A;
我的模型实体第二个对象=SourceObject-B;
我的Doamin实体列表对象=目标对象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;
}
所以我需要将其转换为这个(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"
}
]
有什么方法可以得到以上的输出请帮助我。
你可以在你的映射器中做这样的事情:
DomainUser UserToDUser(User user, CountryDetails countryDetails);
default List<DomainUser> UsersToDomainUsers(List<User> users, CountryDetails countryDetails) {
return users.stream()
.map((user -> UserToDUser(user, countryDetails)))
.collect(Collectors.toList());
}
这将使用MapSTRt生成的映射器将每一个User
与相同的Country细节
合并,以创建一个DomainUser
,并使用流将它们收集到一个List
中。
假设我有这样的映射: 现在,我需要将子列表映射到子列表,但它们都有相同的父对象。我希望这样做: 但不管用,有机会做吗?
我是MapStruct的新手,我试图映射目标类中的对象列表,其中as源具有包括其他字符串变量在内的单个值。自定义实现也没有运气。请执行的任何建议
尝试使用mapstruct将两个列表映射到另一个列表时遇到问题。结构如下: 我需要将来自类C和类B的列表映射到类A中的列表(从对象B和对象C到对象A的映射已经完成)。我尝试了以下方法: 这给我带来了编译错误。有人能帮我映射这些列表吗?我听说过一个名为异常的注释参数,但无法解决我的问题。 谢谢
我有Object1和Object2。现在,我想映射对象3,属性来自1 比方说,我有两个目标: 现在,有了这些,我想把它映射进去 哪里,first_name 现在,我的问题是,怎么做? 然而,目前,我正在这样做 但是,在这里,我必须在addressToView()中手动编写映射。 因此,有没有办法避免这种情况? 或者,处理此类情况的首选方式是什么?
我有2个微服务:我们称它们为A和B。 由B处理的实体(其中引用了a的实体)被实现为简单的长id(例如groupId) 我想要实现的是使用mapstruct填充B(由A持有)的缺失组数据。到目前为止,我尝试使用@AfterMapping函数向a请求缺失的数据。我的映射器是: 给我映射功能的实现接口是: 生成的代码的问题在于,将实体列表映射到DTO列表的函数对每个实体使用EntityToToTo,导致
假设我有以下课程: