国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

java中基本類型和包裝類型實踐經驗

2019-11-14 23:52:02
字體:
來源:轉載
供稿:網友
java中基本類型和包裝類型實踐經驗

至今,小菜用java快兩年了,有些事,也該有個總結。

基本類型和包裝類型的概念在本文不作贅述。

如果這兩種類型直接使用,倒沒什么值得討論的,無非就是自動裝箱拆箱,java可以讓你感覺不到他們的存在,但如果我們在數據庫映射實體(下文簡稱bo,即businessobject)中使用,就得注意了!

比如有一個評定表,里邊有個評分字段,在寫bo時,定義評分屬性,是用int還是Integer呢?

假如用Integer,在做數據插入時,先實例化一個bo,此時bo中的Integer類型字段,默認是null值,如果我們一不留神忘了給它一個初始值0,那么插入到數據庫中的值也是null,再查詢出來,當然也是null。

試想,作為評分而言,下限也就是0分,怎么可能是null?于情說不通;讀者平時可能不太注意,以下代碼會拋出空指針異常:

1 Integer i = null;2 3 if(i == 0){   4 5 }

為啥?因為java會對i進行自動拆箱,null怎么拆,當然會空指針了,于理說不通。

既然于情于理都不通,看來我們只能用基本類型int,而int恰好解決了上述問題,因為int是基本類型,天生就有初始值0。

有些時候,我們會直接把bo放在controller層,用來封裝參數,客戶端提交的參數,直接用一個bo來接受,就不用反復定義一堆變量,而且方便插入到數據庫。

那么問題來了,如果我們的bo中是用基本類型int定義的屬性,那么天生就會有默認值0,就算客戶端不提交這個參數,也會有值,這樣就無法區分值0是客戶端提交的,還是默認的。

小菜以為,解決這個問題也不難,最簡單的方法就是把0看作非法值,或者空值。如果檢查到某個值為0,就認為沒有提交該參數,或者提交的參數非法。

當然,不能一概而論,一棒子打死所有的0。在經典的設計中,有個概念叫軟刪除,就是加個字段(比如:status)標記一下,0表示該條記錄正常,1表示已刪除。這里依然可以用0,因為這是對內的參數,作為系統內部運作使用,不涉及與客戶的交互。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 柘荣县| 石泉县| 宜兴市| 顺昌县| 乐都县| 开封市| 临沂市| 鄢陵县| 汤阴县| 桃园县| 安达市| 玉龙| 龙海市| 紫金县| 德格县| 基隆市| 青河县| 农安县| 通州市| 集贤县| 卢龙县| 克拉玛依市| 宜章县| 赤壁市| 洪洞县| 勃利县| 安塞县| 缙云县| 大方县| 卓资县| 孝义市| 阜新| 北安市| 苏尼特左旗| 岢岚县| 关岭| 宝应县| 延川县| 鄂托克旗| 大冶市| 澄城县|