当前位置: 首页 > 知识库问答 >
问题:

检查所有Dto成员中的null条件。如果没有,则将值设置为pojo类的相同属性

陈富
2023-03-14

我正在使用Spring启动来恢复网络服务,我有很多DTO和模型对象。

做post请求时,前端用户正在发送一个DTO类型的对象。Dto大多具有Model对象的类似成员。我正在检查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;
    }
}

和pojo

 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())。这就是我所需要的。

共有2个答案

上官联
2023-03-14

如果您想要一种一致的方式,请这样做。1.使用对象映射器将您的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
黄沈浪
2023-03-14

这似乎是ModelMapper项目的用例。我没有用过,但浏览了一下这里的文档:http://modelmapper.org/getting-started/#mappingModelMapper似乎解决了完全相同的问题。

 类似资料:
  • 有没有一种简单的方法可以将TypeScript类中的所有值设置为null,而无需像这样重复手动复制和粘贴。要遵循干燥原则(不要重复自己)。如果没有定义,我希望所有的值都自动设置为空。

  • 问题内容: 如何在SQL表中将所有0值都设置为NULL? 提前致谢。 问题答案:

  • 问题内容: 如何设置数据属性而不在jQuery中添加值?我要这个: 我试过了: 其他所有内容似乎都将第二个参数添加为字符串。是否可以只设置没有值的属性? 问题答案: 该功能也是设置器功能。您可以将一个空字符串传递给它。 空字符串将仅创建没有值的属性。

  • 我有一个相当简单的情况,我想在我的规则条件中检查一个属性是否为空。 我在调试中跟踪了这一点。正在插入一个Fact,属性为null,但规则仍然会触发。控制台输出如下。 如果我将条件更改为,则规则不会触发。所以它似乎与我所期望的完全相反。 我们确实有一个使用函数的解决方法,但它有点难看,我不明白为什么它首先不起作用。 编辑1 口水版本是5.3.0。 事实是通过另一条规则加载的,该规则使用来自的和服务方

  • 问题内容: 我想检查numpy数组/矩阵的列中的所有值是否相同。我试图用的的ufunc ,但它似乎不是在所有情况下工作时: 为什么在第二种情况下中间的列也求和,而应该是? 谢谢你的帮助! 问题答案: 将每个值与第一行中的相应值进行比较: 如果该列中的所有值均为True,则该列共享一个公共值: 可以通过微观分析将其应用于以下情况时可以看到的问题: 前两项,并经过相等性测试,结果为: 现在,经过测试是

  • 问题内容: 将项目转换为swift 3后,在此代码块的第一行出现以下错误: 我猜该错误是由.. 语法变化引起的,对此的更正是什么? 问题答案: 新语法如下: 作为建议,您无需指定该字符串,因为假定您要为其分配值。