springboot~Integer和int如何选择,Integer的意义何在
今天说⼀下⾃⼰在项⽬中遇到的问题,然后总结⼀下Integer引⽤类型和int值类型
◆关于默认值
Integer默认为null
int默认为0
◆为什么把数据实体设计成Integer或者不是int
⼤叔认识,这样设计有助于我们区分这个字段是否被设置过,或者说是否被set过,⽽对于Integer来说,如果没有被set过,它⼀定是null(当然你把它强制改为null除外),⽽对于int来说,你⽆法区别0和默认值,因为它默认就是0,我觉得这是最重要的⼀点。
可以区分属性是否被设置过值
◆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");springframework和springboot
query.setEmail("bfyxzls@sina"); //当没有设置Age属性时,它是null,在QueryWrapper⾥将被忽略,即查询所有Age
UserInfo dbUser = userInfoMapper.selectOne(new QueryWrapper<>(query));
System.out.println(dbUser);
Assert.assertEquals("lind", Name());
上⾯的代码中,如果把Age改成int类型,那它只能查询出Age=0的数据,这不是我们所希望的!

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。