java.lang.NullPointerException在Mybits下的异常
2018-03-08 11:52
501 查看
前几天在用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,所以发生了报错。
类似于
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,所以发生了报错。
相关文章推荐
- 在Servlet使用getServletContext()获取ServletContext对象出现java.lang.NullPointerException(空指针)异常的解决办法
- Android 4.3以下, 调用measure(0, 0)抛java.lang.NullPointerException异常
- 在Servlet使用getServletContext()获取ServletContext对象出现java.lang.NullPointerException(空指针)异常的解决办法
- 在Servlet使用getServletContext()获取ServletContext对象出现java.lang.NullPointerException(空指针)异常的解决办法
- java.lang.NullPointerException 空指针异常问题
- smartUpload 上传时 java.lang.NullPointerException: charsetName异常
- [异常] MyEclipse Deploy点不开 An internal error occurred during: "Launching MVC on Tomcat 6.x". java.lang.NullPointerException
- 在Servlet使用getServletContext()获取ServletContext对象出现java.lang.NullPointerException(空指针)异常的解决办法
- Spring异常解决 java.lang.NullPointerException,配置spring管理hibernate时出错
- 关于字符串数组赋值的问题--java.lang.NullPointerException异常
- 关于java.lang.NullPointerException这个异常
- 在Servlet使用getServletContext()获取ServletContext对象出现java.lang.NullPointerException(空指针)异常的解决办法
- zeppelin 空指针异常问题 java.lang.NullPointerException
- Struts2中使用execAndWait后,在 Action中调用getXXX()方法报告java.lang.NullPointerException异常的原因和解决方法
- 在Servlet使用getServletContext()获取ServletContext对象出现java.lang.NullPointerException(空指针)异常的解决办法
- 关于Java空指针异常的几种情况的总结(java.lang.NullPointerException)
- 异常:failed for object com.sdu.crm.pojo.Customer@136a986 [java.lang.NullPointerException]
- 避免java.lang.NullPointerException错误(jsp调试过程中烦人而无奈的java异常)
- hibernate使用了乐观锁后报java.lang.NullPointerException 异常的原因
- eclipse中,junit对单个方法进行测试时空指针异常(java.lang.NullPointerException)