Mybatis获取SqlSession时报空指针的错误解决

开始学Mybatis,一开始就遇到了一个空指针的bug,一查就是一上午。。。。。

Exception in thread "main" java.lang.NullPointerException
	at org.apache.ibatis.session.SqlSessionFactoryBuilder.build(SqlSessionFactoryBuilder.java:84)
	at org.apache.ibatis.session.SqlSessionFactoryBuilder.build(SqlSessionFactoryBuilder.java:64)
	at com.xs.test.MybatisTest.main(MybatisTest.java:24)

测试的时候发现就是加载的配置文件一直就是null。。。。。

1. 看这个报错信息就感觉可能是配置文件出了问题。于是去先检查配置文件。

mybatis配置文件中先检查:


        
        

这一块如果命名不一致的情况,也会出现空指针异常的报错。

2. 再去看指定映射配置文件的位置是否正确,也就是mapper的配置:


        
    

这里使用的是resource,我的配置文件是在resources下的,位置如下:
Mybatis获取SqlSession时报空指针的错误解决_第1张图片
3. 后来又去看了看maven工程中依赖是不是导入的有问题,检查了一圈也没有什么问题。

最后发现问题在测试代码中:
一开始我是这么写的:

//导入的包名
import javax.annotation.Resources;

//代码
InputStream in = Resources.class.getResourceAsStream("SqlMapConfig.xml");

一开始直接写*Resources.getResourceAsStream(“SqlMapConfig.xml”);*的时候就提示说这个方法不存在,我当时也没反应过来是包导错了 ,然后Google了一下加上了.class,就不报错了,实在是想得太简单了。

然后才发现正确的应该是这样的:

//包名应该是这个。。。
import org.apache.ibatis.io.Resources;

InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml");

改完包名就好了,之前提示方法不存在的原因就是因为包导错了。

实在是太不小心了,有很多时候,方法名相同,包导错了就很可能会出现问题。

欢迎大家访问我的个人博客

你可能感兴趣的:(Java,Bug,idea)