本文主要是介绍Mybatis-Mapper返回对象数据为空,报空指针异常引起原因,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
引起空指针异常的sql语句:
select d.VALUEE as name, aqu.id, aqu.state, aqu.issue, aqu.start_time, aqu.end_time,aqu.long_term, aqu.issue_authority, aqu.remark, aqu.attachmentsfrom aqjy_access_config aacleft join aqjy_config_user acu on aac.id = acu.config_idleft join aqjy_qualification_user aqu on aac.access_bind_id = aqu.dict_id and acu.user_id = aqu.user_idleft join t_dict d on aac.access_bind_id = d.DICT_IDwhere aac.access_bind_type = 'qualification'andaac.access_id = 1andaac.config_type = 'laboratory'andacu.user_id = 3
在navicat中执行语句得到的结果:
正常来说查询数据时没有对应的数据就返回null,为什么这里却报了空指针异常呢?
将sql语句修改一下就能发现问题
select *from aqjy_access_config aacleft join aqjy_config_user acu on aac.id = acu.config_idleft join aqjy_qualification_user aqu on aac.access_bind_id = aqu.dict_id and acu.user_id = aqu.user_idleft join t_dict d on aac.access_bind_id = d.DICT_IDwhere aac.access_bind_type = 'qualification'andaac.access_id = 1andaac.config_type = 'laboratory'andacu.user_id = 3
在navicat中执行语句得到的部分结果:
可以得知实际是有数据的,但是由于我们获取字段时获取到的都是值为null的字段,如果返回对象数据为null,用户会以为没有对应条件的数据,但是实际是有的,所以mybatis为了防止出现歧义,不允许出现这种情况,会抛出空指针异常。
这篇关于Mybatis-Mapper返回对象数据为空,报空指针异常引起原因的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!