Java int和integer有什么区别 (mybatis踩坑)

不要在实体类中使用int

我们都知道Integer是int的包装类,而int是基本数据类型。所以Integer类型的变量会初始化为null,int类型则会被初始化为0 。

所以在下面的动态拼接例子中:

<select id="findActiveBlogWithTitleLike"
     resultType="Blog">
  SELECT * FROM BLOG
  WHERE state = ‘ACTIVE’
  <if test="title != null">
    AND title_id like #{id}
  </if>
</select>

如果id在实体类中是用int表示,那<if test="title != null">的判断是恒为真的。无法达到动态拼接的效果。

如果用integer表示,当id缺省时会被初始化为null这样这条动态sql才能按照我们的预想运行。

integer缓存

此外,integer与int的区别还需要注意的是:因为integer是引用类型所以对其大小进行比较时不能使用等号.

integerstring有一些相似之处

 		Integer i1 = 127;  
        Integer i2 = 127;  
        System.out.println(i1 == i2);  
          
        i1 = 128;  
        i2 = 128;  
        System.out.println(i1 == i2); 
		/*result:
		
		  true
          false
		*/

integer具有缓存机制,这个缓存值默认范围是**-128 到 127 **,刚好是八位二进制补码的表示范围(计算机读取文件以字节为单位的,也就是8比特).

原文地址:https://www.cnblogs.com/AD-milk/p/14342058.html