我正在使用 spring boot 来提供 restful Web 服务,我有很多 DTO 和 Model 对象。
执行后置请求时,前端用户正在发送 DTO 类型对象。Dto 具有大多数相似的模型对象成员。我正在检查 DTO 对象中每个成员的空约束,如果没有,则将值设置为 MODEL 对象的类似属性。
我在下面简要定义了我的情况,
class UserDto{
private String userid;
private String username;
private String dept;
public String getUserid() {
return userid;
}
public void setUserid(String userid) {
this.userid = userid;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getDept() {
return dept;
}
public void setDept(String dept) {
this.dept = dept;
}
}
和波乔
class User {
private String userid;
private String username;
private String dept;
//some constructors
........
public String getUserid() {
return userid;
}
public void setUserid(String userid) {
this.userid = userid;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getDept() {
return dept;
}
public void setDept(String dept) {
this.dept = dept;
}
}
我每次都这样检查,现在我只想知道是否有任何一致的方法来做到这一点
if (userDto.getUserid()!= null)
user.setUserid(userDto.getUserid());
if (userDto.getUsername()!= null)
user.setUsername(userDto.getUsername());
我已经看过这个链接 知道类中的所有变量是否为空的最佳方法是什么?.这只告诉如何在对象中找到可为空的成员,但就我而言,我想找到非空成员并复制到对象中的另一个成员。即如果userDto.getUsername()!==null
那么user.setUsername(userDto.getUsername())
.这就是我所需要的。
这似乎是ModelMapper项目的用例。我没有使用它,但浏览这里的文档:http://modelmapper.org/getting-started/#mapping 似乎 ModelMapper 解决了您完全相同的问题。
如果你想要一个一致的方式,这样做。1. 使用 objectMapper 将 dto 对象转换为字符串。2. 将此字符串映射到您的 pojo。
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.setDefaultPropertyInclusion(Include.NON_NULL);
String userDtoString = objectMapper.writeValueAsString(userDto);
User user = objectMapper.readValue(userDtoString, User.class); // your desired user class object without null values