关于Spring中java.lang.NullPointerException: Cannot invoke “xxx” because “xxx” is null 的问题
当我好不容易编译成功,开始运行时,使用postman测试接口功能时却返回了一个错误:
编译成功开始运行:
postman返回:
并在IDEA显示了
java.lang.NullPointerException: Cannot invoke “com.example.mybatisdemo.mapper.StudentMapper.ListStudent()” because “this.studentMapper” is null
错误指向了Service层调用的自动注解的Mapper对象为空。我很确定我的代码没有问题,该有的注解都有,xml也和Mapper文件对应的上,测试端口也没有问题,但无论怎么修改代码,最后都会显示studentMapper is Null。
CSDN或其他网站上的很多解决方法都不能解决我的问题。
最后还是通过修改了pom.xml的配置才能完美运行。
原先的pom.xml配置:
修改mybatis-spring包的版本到更高版本,比如说2.3.1和3.0.2,重新配置运行后错误解决(选择2.3.1)。
中间多出来了两段信息,这是mybatis的设置信息,之前没显示可能就和mybatis的配置有关系。使用postman测试接口功能:
出现了想要的结果,完美解决原先的错误。
刚好之前也在CSDN评论区了解到在配置的时候spring,jdk和其他各个框架的版本需要相互对应上,具体见:
http://mybatis.org/spring/zh/index.html
Java 8+使用较老版本的框架,Java 17+选择较新版本的框架。我用的Java 17选择了2.1.1的包导致出现了该问题。所以更新包之后就能解决,最后选择了3.0.2,测试之后也没有出现问题。