简体   繁体   English

如何使用 ModelMapper 将两个相关实体映射到一个 DTO 对象

[英]How Map two related Entities to one DTO Object using ModelMapper

I have two related Entities in my application integratorDetails, IntegratorChannelDetails.我的应用程序integratorDetails IntegratorChannelDetails 中有两个相关实体。 What I want to achieve is to map integratorDetails and IntegratorChannelDetails to a DTO Object IntegratorAllInfoDto which has similar fields as the entities, using ModelMapper, but I am not sure how to do that, below are the entities我想要实现的是使用 ModelMapper 将 integratorDetails 和 IntegratorChannelDetails 映射到具有与实体相似字段的 DTO 对象 IntegratorAllInfoDto,但我不知道该怎么做,下面是实体

integratorDetails积分器详情

import com.couchbase.client.java.repository.annotation.Field;

import com.couchbase.client.java.repository.annotation.Id;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.data.couchbase.core.mapping.Document;

import java.util.Date;
import java.util.List;

@Document
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class IntegratorDetails {
    @Id
    private String integratorId;
    @Field
    private String name;
    @Field
    private String accountId;
    @Field
    private String status;
    private String privateKey;
    private String publicKey;
    private List<ThirdPartyKey> thirdPartyKey;
    private Date createdTime;


}

IntegratorChannelDetails IntegratorChannel详情

import com.couchbase.client.java.repository.annotation.Id;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.data.couchbase.core.mapping.Document;

import java.util.List;

@Document
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class IntegratorChannelDetails {
    @Id
    private String integratorChannelid;
    private String accountId;
    private String type;
    private List<ChannelType> channelTypes;
    private List<ChannelList> channelList;
    private List<String> fixedChannels;
    private String timeServiceUrl;
    private List<RibbonRules> ribbonRules;
    int numberOfSlots=4;


}

And my Dto is我的 Dto 是

import com.tdchannels.admin.ms.channel.db.entity.ChannelList;
import com.tdchannels.admin.ms.channel.db.entity.RibbonRules;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.Date;
import java.util.List;

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class IntegratorAllInfoDto<T> {

    private String integratorId;
    private String name;
    private String accountId;
    private String status;
    private Date createdTime;
    private List<ChannelTypeDto> channelTypes;
    private List<ChannelList> channelList;
    private List<String> fixedSlots;
    private String publicKey;
    private List<ThirdPartyKeyDto> thirdPartyKey;
    private List<RibbonRules> ribbonRules;

}

If you need to map multible objects into a single destination you do like this.如果您需要将多个对象映射到单个目的地,您可以这样做。

ModelMapper modelMapper = new ModelMapper();
IntegratorDTO dto= modelMapper.map(details, IntegratorDTO.class);
//This will add additional values to the dto.
modelMapper.map(integratorChannelDetails, dto);

Like the documentation http://modelmapper.org/getting-started/像文档http://modelmapper.org/getting-started/

You can concat the names of entities on DTO, like:您可以在 DTO 上连接实体的名称,例如:


Source model

// Assume getters and setters on each class
class Order {
  Customer customer;
  Address billingAddress;
}

class Customer {
  Name name;
}

class Name {
  String firstName;
  String lastName;
}

class Address {
  String street;
  String city;
}


Destination Model

// Assume getters and setters
class OrderDTO {
  String customerFirstName;
  String customerLastName;
  String billingStreet;
  String billingCity;
}

如何转换列表<string[]>列出<object>使用 modelmapper 或 stream().map()?<div id="text_translate"><p> 我有以下数据作为 java 中的 String[] 列表,是否可以使用 stream().map() 进行转换? 这是列表的一个示例。</p><pre> Data's type is List&lt;String[]&gt; data which contains the following structure: ["a","b","c","d"], ["e","f","g","e"], ["e","f","g","e"]</pre><p> 我试图用modelMapper和没有modelMapper的map我的值并且数据是空的:</p><pre> List&lt;Custom&gt; mapInfo = new ArrayList&lt;CustomData&gt;(); mapInfo=data.stream().map(objectModel -&gt; modelMapper.map(objectModel, CustomData.class)).collector(Collectors.toList());</pre><p> 但是,当我尝试使用数据时,数组的每个 object 上的 object 结构都是空的:</p><pre> @Getter @Setter @Builder @NoArgsConstructor @AllArgsConstructor public class CustomData(){ @Builder.Default private String valueA=""; @Builder.Default private String valueB=""; @Builder.Default private String valueC=""; @Builder.Default private String valueD=""; }</pre></div></object></string[]> - How to convert List<String[]> to List<Object> using modelmapper or stream().map()?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何使用 ModelMapper 将外键从 dto 映射到实体对象? - How to map foreign key from dto to the entity object using ModelMapper? 尝试将实体映射到 DTO 对象时,ModelMapper 返回 NULL - ModelMapper returns NULL when trying to map Entity to DTO object ModelMapper &amp; JPA:如何将带有 id 的 map DTO 转换为带有 oneToMany 字段的实体 - ModelMapper & JPA: How to map DTO with id to Entity with oneToMany field 如何使用模型映射器将 map 多个字段转换为一个目标字段 - How to map multiple fields into one destination field using modelmapper 如何将一个 DTO 映射到多个实体? - How to map a DTO to multiple entities? 如何使用 ModelMapper 实现 map oneToMany - How to map oneToMany using ModelMapper 如何转换列表<string[]>列出<object>使用 modelmapper 或 stream().map()?<div id="text_translate"><p> 我有以下数据作为 java 中的 String[] 列表,是否可以使用 stream().map() 进行转换? 这是列表的一个示例。</p><pre> Data's type is List&lt;String[]&gt; data which contains the following structure: ["a","b","c","d"], ["e","f","g","e"], ["e","f","g","e"]</pre><p> 我试图用modelMapper和没有modelMapper的map我的值并且数据是空的:</p><pre> List&lt;Custom&gt; mapInfo = new ArrayList&lt;CustomData&gt;(); mapInfo=data.stream().map(objectModel -&gt; modelMapper.map(objectModel, CustomData.class)).collector(Collectors.toList());</pre><p> 但是,当我尝试使用数据时,数组的每个 object 上的 object 结构都是空的:</p><pre> @Getter @Setter @Builder @NoArgsConstructor @AllArgsConstructor public class CustomData(){ @Builder.Default private String valueA=""; @Builder.Default private String valueB=""; @Builder.Default private String valueC=""; @Builder.Default private String valueD=""; }</pre></div></object></string[]> - How to convert List<String[]> to List<Object> using modelmapper or stream().map()? 是否可以对 ModelMapper(在 spring 引导中)使用一个 propertyMap 到 map 在两个方向(DTO 到实体和实体到 DTO)? - Is it possible to use one propertyMap for ModelMapper (in spring boot) to map in both directions (DTO to Entity and Entity to DTO)? Java ModelMapper:将 DTO 映射到 EmbeddedId 实体类 - Java ModelMapper: map DTO to EmbeddedId entity class 如何在 Java 中将双向实体映射到 DTO - How to map bidirectional Entities to DTO in Java
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM