spring整合mybatis时报空指针异常:service注入得不到Mapper接口的实例化对象(已解决)

解决方法在下边↓↓

问题一    mabite中Mapper接口的实例化对象找不到,显示为NULL

这是我的配置,还有运行时报的错

spring整合mybatis时报空指针异常:service注入得不到Mapper接口的实例化对象(已解决)_第1张图片

spring整合mybatis时报空指针异常:service注入得不到Mapper接口的实例化对象(已解决)_第2张图片


spring整合mybatis时报空指针异常:service注入得不到Mapper接口的实例化对象(已解决)_第3张图片这几个文件都是使用反向工程生成的,应该没有错。

运行结果显示tUserMapper为null


问题二:

还有,使用ssm框架写web工程的时候还出过这么一个错:

org.apache.ibatis.binding.BindingException

        Invalid bound statement (not found): com.dao.TUserMapper.selectByPrimaryKey

配置跟上边的一样,这次是找到mapper了,但是方法又出问题了....求解


到底是肿么回事啊,大神求教,大腿求抱啊......

=================== 睡了一觉  ==================================

果然,有什么问题解决不了的,发那别管,关上电脑睡一觉,第二天你会发现,,,,,,,问题还在,hhhhh

好在功夫不负有心人,我给解决了

解决:

问题一:

spring整合mybatis时报空指针异常:service注入得不到Mapper接口的实例化对象(已解决)_第4张图片

我一直是以为Mapper的注入出了问题,,结果恰恰不是,问题出在了service ,因为在service里面是通过注入的方式获得Mapper的实例化对象的,所以service对象的获得也应该采用注入的方式(前后一致),这样才能得到这个类扫面后创建的Mapper的实例化对象(可参考源码)。如果是new 出来的service对象的话,它的中的@Autowired注解是不起作用的,因为自己new出来的对象不是spring容器中的,无法使用注入,因此tUserMapper对象当然为NULL啦。

还有最让人头疼的就是,开发工具昨天抽筋了,明明之前已经写对了,但是编译不及时,依然报错.......重启之后再打开,莫名的又编译成功了,,所以,睡一觉还是有这么点好处的(玩笑话),clean之后再执行编译,其实也是可以的。


问题二:

第二个问题错的就有点尴尬了


如图,sqlMapConfig里面忘了配置这个东西,导致Mapper对象找不到这个方法(这么理解不知道对不对,反正加着这个之后,一下子就可以了)。

让我发愁了一天的两个问题,今天早上起来竟然用了一个小时不到的时间就解决了,果然,电脑闹起小脾气来,啥事也干不好啊...


附上自己写的一个mybatis的实例,大致标了一下运行的流程,有不妥的地方还希望路过的大神多多指点啊:

spring整合mybatis时报空指针异常:service注入得不到Mapper接口的实例化对象(已解决)_第5张图片


java就像一盒巧克力,你永远不知道,ta还会爆出什么bug....

以上内容均为个人所述,如有不妥,欢迎指正,谢谢




你可能感兴趣的:(java,错题集)