博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
一个int类型引发的bug
阅读量:6908 次
发布时间:2019-06-27

本文共 559 字,大约阅读时间需要 1 分钟。

一、引言

今天我在项目开发中,遭遇了一个莫名其妙的问题,概括加抽象后形成如下问题:在使用MyBatis的XML语句实现Dao层接口 List<Person> selectBySome(@Param("record") PersonExample example)时候,我写的XML中有这么一句代码:

b.id=record.id

结果我及时不对example的id赋值,查询条件还是会有 b.id=0 ,为啥?

 

二、分析

很显然,条件中带有了 b.id=0 那么是因为 record.id!=null 成立了,此时我反过去看PersonExample,你猜我看到了什么?

public PersonExample{  private int id;    //...}

看清楚,id居然是int, int作为基本数据类型肯定不为空啊,应该改为int的包裹类型Integer这才可以为空。

so int=> Integer bug消失。

 

三、总结

这个BUG印证了我之前看到的一篇文章中的一个关联:Struts2或者SpringMVC接口前台参数的时候应该尽可能使用包裹类型,目的就是为了处理为null的情况。

此处是否亦然?

那么项目中是否尽可能的使用包裹类型而不是基本类型了?

 

转载地址:http://qagdl.baihongyu.com/

你可能感兴趣的文章
1.单一职责原则(Single Responsibility Principle)
查看>>
LeetCode--058--最后一个单词的长度
查看>>
Mysql JSON 新特性用法
查看>>
python List 对象
查看>>
@RequestParam注解的使用
查看>>
JQ_简单图片拖动
查看>>
【直视骄阳】生命的留言
查看>>
shell脚本:不登陆KVM虚拟机,修改虚拟机网卡IP地址
查看>>
性能测试loadrunner场景问题之socket
查看>>
fdisk分区命令详解与fdisk非交互式分区
查看>>
LINUX下PHP运行环境搭建之三(转)
查看>>
asp.net中连接字符串问题(类库中使用ConfigurationManager.ConnectionStrings)
查看>>
艾伟_转载:Web网站缓存文件并发问题解决方案
查看>>
iOS LaunchScreen设置启动图片 启动页停留时间
查看>>
android137 360 双击三击事件
查看>>
PHP-002
查看>>
web接口开发与测试
查看>>
谷歌笔试题整理(一)
查看>>
IOS-KVO、KVC
查看>>
Apache服务器常规操作
查看>>