中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MyBatis中int和Integer怎么使用

發布時間:2023-03-31 14:34:49 來源:億速云 閱讀:140 作者:iii 欄目:開發技術

這篇文章主要介紹“MyBatis中int和Integer怎么使用”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“MyBatis中int和Integer怎么使用”文章能幫助大家解決問題。

    有關int和Integer的使用

    int 類型,在默認情況下不賦值為0,執行到mybatis的更新語句時,被當做數字0,而非null

    Integer的默認值為null,即Integer可以區分出未賦值和值為0的區別,int則無法表達出未賦值的情況,

    總結:在實體類中盡量使用Integer修飾,Integer可以區分出未賦值和值為0的區別,我們大部分做判斷都是以“”null“”去判斷的。

        /**
         * 主鍵字段
         */
        @TableId(type = IdType.AUTO) //根據數據庫類型設置自增
        private Integer id;

    自增主鍵為integer類型,對應數據庫列類型為int,如果不加這個配置的話,就會默認將跟隨全局。

    如果你的數據庫是int類型且自增的話,那么mybatis-plus會默認插入Long類型的自增id,導致報錯,當然你可以考慮在數據庫里把id設置成bigint類型,實體類里用Long來作為主鍵id

    int和Integer的區別

    1、Integer是int的包裝類,int則是java的一種基本數據類型 

    2、Integer變量必須實例化后才能使用,而int變量不需要 

    3、Integer實際是對象的引用,當new一個Integer時,實際上是生成一個指針指向此對象;而int則是直接存儲數據值 

    4、Integer的默認值是null,int的默認值是0

    延伸: 

    關于Integer和int的比較 

    1、由于Integer變量實際上是對一個Integer對象的引用,所以兩個通過new生成的Integer變量永遠是不相等的(因為new生成的是兩個對象,其內存地址不同)。

    Integer i = new Integer(100);
    Integer j = new Integer(100);
    System.out.print(i == j); //false

    2、Integer變量和int變量比較時,只要兩個變量的值是向等的,則結果為true(因為包裝類Integer和基本數據類型int比較時,java會自動拆包裝為int,然后進行比較,實際上就變為兩個int變量的比較)

    Integer i = new Integer(100);
    int j = 100;
    System.out.print(i == j); //true

    3、非new生成的Integer變量和new Integer()生成的變量比較時,結果為false。(因為非new生成的Integer變量指向的是java常量池中的對象,而new Integer()生成的變量指向堆中新建的對象,兩者在內存中的地址不同)

    Integer i = new Integer(100);
    Integer j = 100;
    System.out.print(i == j); //false

    4、對于兩個非new生成的Integer對象,進行比較時,如果兩個變量的值在區間-128到127之間,則比較結果為true,如果兩個變量的值不在此區間,則比較結果為false

    Integer i = 100;
    Integer j = 100;
    System.out.print(i == j); //true
    Integer i = 128;
    Integer j = 128;
    System.out.print(i == j); //false

    對于第4條的原因: 

    java在編譯Integer i = 100 ;時,會翻譯成為Integer i = Integer.valueOf(100);,而java API中對Integer類型的valueOf的定義如下:

    public static Integer valueOf(int i){
        assert IntegerCache.high >= 127;
        if (i >= IntegerCache.low && i <= IntegerCache.high){
            return IntegerCache.cache[i + (-IntegerCache.low)];
        }
        return new Integer(i);
    }

    java對于-128到127之間的數,會進行緩存,Integer i = 127時,會將127進行緩存,下次再寫Integer j = 127時,就會直接從緩存中取,就不會new了

    關于“MyBatis中int和Integer怎么使用”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    子长县| 康乐县| 邻水| 北票市| 高雄市| 玉龙| 扶风县| 舞阳县| 西贡区| 辰溪县| 聂荣县| 新源县| 东乡| 新余市| 余庆县| 盐池县| 大同市| 芦溪县| 东至县| 济宁市| 合江县| 韶关市| 溧阳市| 开化县| 门源| 铁岭市| 呼伦贝尔市| 库车县| 武胜县| 珠海市| 乌拉特前旗| 太原市| 江门市| 石家庄市| 余庆县| 金山区| 达日县| 平阴县| 南木林县| 高淳县| 荔波县|