问题描述:
我有一个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
}
答案 0 :(得分:5)
http://sourceforge.net/projects/dozer/develop? (不确定它是否映射了您的需求,但请看一下) http://dozer.sourceforge.net/
答案 1 :(得分:3)
ModelMapper是值得一试的另一个图书馆。它提供了一个流畅的API来映射属性,而不是使用字符串引用或XML。
查看ModelMapper网站了解更多信息:
答案 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),您就可以映射
了