中文字幕精品亚洲无线码二区,国产黄a三级三级三级看三级,亚洲七七久久桃花影院,丰满少妇被猛烈进入,国产小视频在线观看网站

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

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

關于默認值

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

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

大(da)叔認識,這樣(yang)設計有助于我們(men)區分這個字(zi)段是(shi)否被設置過(guo),或者(zhe)說是(shi)否被set過(guo),而對(dui)于Integer來(lai)說,如果(guo)沒有被set過(guo),它一定(ding)是(shi)null(當然(ran)你(ni)把它強制改為null除外(wai)),而對(dui)于int來(lai)說,你(ni)無法區別0和默認值,因為它默認就是(shi)0,我覺得這是(shi)最(zui)重要(yao)的一點(dian)。

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

QueryWrapper里更加適合Integer

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

例子,兩個實體

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());

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

posted @ 2018-11-12 18:48  張占嶺  閱讀(4066)  評論(1)    收藏  舉報