你的位置:首页 > Java教程

[Java教程]java中基本类型和包装类型实践经验

     至今,小菜用java快两年了,有些事,也该有个总结。

     基本类型和包装类型的概念在本文不作赘述。

     如果这两种类型直接使用,倒没什么值得讨论的,无非就是自动装箱拆箱,java可以让你感觉不到他们的存在,但如果我们在数据库映射实体(下文简称bo,即business object)中使用,就得注意了!

     比如有一个评定表,里边有个评分字段,在写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,因为这是对内的参数,作为系统内部运作使用,不涉及与客户的交互。

 


什么时候去贵州旅游最好去贵州旅游最佳路线贵州旅游景点推荐贵州跟团旅游报价多少贵州旅游线路大全北京动物园门票价格_北京动物园门票_北京动物园门票要多少钱 崇明岛在哪_崇明岛在哪里_崇明岛在哪个省 狼牙山门票_狼牙山旅游门票价格_狼牙山门票多少钱 张家界武陵源黄龙洞门票价格_杭州黄龙洞门票价格 爱上澳洲 从海豚岛开始 小技巧除大油腻 世园会绿色农产品严把质量安全关 首个中国旅游日积极关注_积极参与_积极分享 昌乐坐车怎么到潍坊富华游乐园?昌乐到富华游乐园乘车路线? 上海大观园几个小时能玩完?上海大观园游玩需要多久? 昌乐到富华游乐园怎么走?昌乐到潍坊富华怎么坐车? 上海大观园介绍?上海大观园里面景点有什么? 2015龙凤山庄影视度假村圣诞节活动?东莞龙凤山庄圣诞平安夜好玩吗? 行摄发现美 大同历史之壮美 2015佛山三水荷花世界圣诞节活动?三水荷花世界圣诞平安夜好玩吗? 行摄发现美 感悟大同苍凉之美 2SK2953 Datasheet 2SK2953 Datasheet 2SK2953(F) Datasheet 2SK2953(F) Datasheet IXFC30N60P Datasheet IXFC30N60P Datasheet 浙江出发去朝鲜旅游 浙江出发去朝鲜旅游 浙江出发去朝鲜旅游 浙江出发去赤道几内亚旅游 浙江出发去赤道几内亚旅游 浙江出发去赤道几内亚旅游 浙江出发去崇明岛旅游 浙江出发去崇明岛旅游 浙江出发去崇明岛旅游