今天說一下本身在項目中遇到的問題,而後總結一下Integer引用類型和int值類型mybatis
大叔認識,這樣設計有助於咱們區分這個字段是否被設置過,或者說是否被set過,而對於Integer來講,若是沒有被set過,它必定是null(固然你把它強制改成null除外),而對於int來講,你沒法區別0和默認值,由於它默認就是0,我以爲這是最重要的一點。app
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; }
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的數據,這不是咱們所但願的!code