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

10 篇文章 0 订阅
2 篇文章 0 订阅

开始学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配置文件中先检查:

<environments default="mysql1">
        <!--配置mysql的环境-->
        <environment id="mysql1">

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

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

<mappers>
        <mapper resource="com/xs/dao/IUserDao.xml"/>
    </mappers>

这里使用的是resource,我的配置文件是在resources下的,位置如下:
在这里插入图片描述
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");

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

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

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

  • 6
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值