springboot~Integer和int如何選擇,Integer的意義何在


今天說一下自己在項目中遇到的問題,然后總結一下Integer引用類型和int值類型

關於默認值

  1. Integer默認為null
  2. int默認為0

為什么把數據實體設計成Integer或者不是int

大叔認識,這樣設計有助於我們區分這個字段是否被設置過,或者說是否被set過,而對於Integer來說,如果沒有被set過,它一定是null(當然你把它強制改為null除外),而對於int來說,你無法區別0和默認值,因為它默認就是0,我覺得這是最重要的一點。

  1. 可以區分屬性是否被設置過值

QueryWrapper里更加適合Integer

QueryWrapper是一個mybatis里的查詢構造器,你可以為實體屬性賦值,然后以它為一個依據,去查詢與它匹配的結果集,當你沒有為屬性賦值時,它是null,(而對於int來說,它是0,0往往是有意義的,在QueryWrapper里,你無法忽略int的屬性,這是十分尷尬的)。

例子,兩個實體

public class UserInfo extends BaseEntity {

  private String name;
  private String email;
  private Integer age;
}

public class UserInfo extends BaseEntity {

  private String name;
  private String email;
  private int age;
}

在QueryWrapper里進行條件的構造

   UserInfo query = new UserInfo();
    query.setName("lind");
    query.setEmail("bfyxzls@sina.com"); //當沒有設置Age屬性時,它是null,在QueryWrapper里將被忽略,即查詢所有Age
    UserInfo dbUser = userInfoMapper.selectOne(new QueryWrapper<>(query));
    System.out.println(dbUser);
    Assert.assertEquals("lind", dbUser.getName());

上面的代碼中,如果把Age改成int類型,那它只能查詢出Age=0的數據,這不是我們所希望的!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM