如果字段具有不同的名称,如何将POJO映射到DTO

时间:2011-06-22 06:58:26

标签: java mapping dto pojo apache-commons-beanutils

问题描述:

我有一个POJO对象,它是从数据库映射的。哪个属性(列)与数据库表中的名称相同。但它需要一些改变,我将不得不使用DTO。但问题是DTO具有数据库表中定义的不同名称的属性,(因为我将数据库表映射到POJO然后POJO映射到DTO )所以在映射时我必须使用字段和字段映射(POJO的一个字段和DTO对象的一个​​字段),这将占用50行代码(数据库表有50列)。有没有解决方案直接映射到我的POJO与DTO?或者,如果数据库表和POJO / DTO具有不同的列名,是否有办法将数据库表映射到POJO / DTO?

例如

public class EmployeePOJO {

    String EMP_ID;
    String EMP_NAME;
    String EMP_SALERY;
    String EMP_DOB;
    String EMP_CONTACT_NO;
    String EMP_ADDRESS;
    String EMP_BLOOD_GROUP;
    String ASSIGNED_PROJECT;
    String PROJECT_MANAGER;
    String ROLE;

    //Getters and setters
}



public class EmployeeDTO {

    //String EMP_ID;
    //String EMP_NAME;
    String salery;            //EMP_SALERY;
    //String EMP_DOB;
    String phoneNumber;       //EMP_CONTACT_NO;
    String address;           //EMP_ADDRESS;
    //String EMP_BLOOD_GROUP;
    String currentProject;    //ASSIGNED_PROJECT;
    String projectManager;    //PROJECT_MANAGER;
    String role;              //ROLE;

    //getters and setters
}

4 个答案:

答案 0 :(得分:5)

http://sourceforge.net/projects/dozer/develop? (不确定它是否映射了您的需求,但请看一下) http://dozer.sourceforge.net/

答案 1 :(得分:3)

ModelMapper是值得一试的另一个图书馆。它提供了一个流畅的API来映射属性,而不是使用字符串引用或XML。

查看ModelMapper网站了解更多信息:

http://modelmapper.org

答案 2 :(得分:1)

您可以添加 @JsonProperty("salery") 以映射字段顶部的 EMP_SALERY 字段。 它使用 import com.fasterxml.jackson.annotation.JsonProperty;

的导入

这在使用 ModelMapper 时对我有用。

如果您再次担心反序列化,您有两种选择。

@JsonProperty("EMP_SALERY")
    public byte getEMP_SALERY() {
    return red;
}

@JsonProperty("salery")
     public void setEMP_SALERY(byte red) {
     this.red = red;
}

另一种方式是使用别名

@JsonAlias({"salery", "EMP_SALERY"})
private String EMP_SALERY;

答案 3 :(得分:0)

我建议你试试JMapper Framework。 使用一点配置(带注释或xml),您就可以映射