3

问题描述:

我有一个 POJO 对象,它是从数据库映射的。具有与数据库表中相同名称的属性(列)。但它需要一些更改,我将不得不使用 DTO。但问题是 DTO 具有数据库表中定义的不同名称的属性,(因此,我将数据库表映射到 POJO,然后将 POJO 映射到 DTO)所以在映射时我必须使用字段和字段映射(一个字段POJO 和 DTO 对象的一个​​字段),这将需要 50 行代码(具有 50 列的数据库表)。是否有任何解决方案可以使用 DTO 直接映射到我的 POJO?或者,如果数据库表和 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

4 回答 4

5

http://sourceforge.net/projects/dozer/develop?(不确定它是否符合您的需求,但看看) http://dozer.sourceforge.net/

于 2011-06-22T07:12:59.220 回答
4

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

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

http://modelmapper.org

于 2011-06-24T04:58:23.890 回答
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;
于 2021-01-04T15:42:51.343 回答
0

我建议你试试JMapper 框架。通过一些配置(带有注释或 xml),您就可以映射

于 2013-02-20T11:33:52.777 回答