首页 > 解决方案 > Pojo 到 DTO - Bean 映射

问题描述

我经历了 stackoverflows、ModelMapper、Dozer 等。我无法弄清楚将实体映射到 DTO 的现有逻辑。

以下是实体和 DTO 的类:

package com.entity;

public class EmployeeRequest {

    private User user;
    private String userId;

    public EmployeeRequest(){
    }   
    //Getters and Setters Below
}

package com.entity;

public class User {

    private Address address;
    private Name name;

    public User(){
    }
    //Getters and Setters Below
}

package com.entity;

public class Address {

    private int flatNo; 
    private String city;

    public Address(){
    }
    //Getters and Setters Below
}

package com.entity;

public class Name {

    private String firstName;
    private String lastName;

    public Name(){
    }   
    //Getters and Setters Below
}

package com.dto;

public class EmployeeRequestDTO {

    private UserDTO user;
    private String userId;

    public EmployeeRequestDTO(){
    }
    //Getters and Setters Below
}

package com.dto;

public class UserDTO {

    private AddressDTO address;
    private NameDTO name;

    public UserDTO() {
    }
    //Getters and Setters Below
}

package com.dto;

public class AddressDTO {

    private int flatNo;
    private String city;

    public AddressDTO() {
    }
    //Getters and Setters Below
}

package com.dto;

public class NameDTO {

    private String firstName;
    private String lastName;

    public NameDTO(){       
    }
    //Getters and Setters Below
}

//映射类:

package com.service;

import com.dto.EmployeeRequestDTO;
import com.entity.Address;
import com.entity.EmployeeRequest;
import com.entity.Name;
import com.entity.User;

public class EntityModelMapperService {

    public static void main(String[] args) {

        Address address=new Address();
        address.setFlatNo(72);
        address.setCity("Kayalpatnam");

        Name name=new Name();
        name.setFirstName("Abdul");
        name.setLastName("Basith");

        User user = new User();
        user.setAddress(address);
        user.setName(name);

        EmployeeRequest employeeRequest = new EmployeeRequest();
        employeeRequest.setUser(user);      
    }
}

如何将实体值映射到 DTO?一旦分配,实体中的任何更改都不应影响 DTO,反之亦然。

标签: javajavabeansmapper

解决方案


以下 1 行足以映射:

EmployeeRequestDTO employeeRequestDTO = new ModelMapper().map(employeeRequest, EmployeeRequestDTO.class);

推荐阅读