java.lang.NullPointerException在Mybits下的异常

    前几天在用SSM框架做开发时报空指针异常,潜意识得就去寻找那个数据没有传进来,可是检查了好久都发现每个数据都传进来了,最后仔细看报错文件发现是Mybits的xml出错,再往下翻发现是POJI中的错误。

   类似于

pass这个属性我定义地是Integer,但是下面set和get中却是int

报错如下:

我当时想都没想就把get和set方法改为Integer,结果问题就解决了,但是为什么改为Integer就行了?

这个问题有两种解决方法:

1 定义pass时用int定义就行,这样无论你get和set是Integer还是int都不会报错;

原因在于int是有默认值的,默认为0;而Integer这种包装类是没有初始值的;

这样哪怕你的get和set是Integer,会自动发生装箱操作,所以不会报错;

2如果pass定义为Integer了,那它的get和set就必须也是Integer;

为什么呢,这个问题我理了一遍才清楚:

如果pass定义为Integer,因为没有默认值,所以为null,当下面用到get和set如果get和set是int的,就得自动发生拆箱操作,但是并不存在这个值让你去拆箱;所以会报错;

而无论你是否会使用get,在Mybits的xml中只要你的动态SQL中有if,如下:

注:上图是我找错误时,不改POJO,只注释掉pass的动态SQL也就不报错了;

Mybits就会自动调用这个属性的get,所以发生了报错。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值