SqlSession空指针异常

在学习使用mybatis时,我写了一个简单的测试代码。创建SqlSession,然后用SqlSession插入一条数据到数据库中,无奈一直报空指针异常。

private SqlSession session;

    @Before
    public void init(){
        SqlSessionFactoryBuilder ssfb = new SqlSessionFactoryBuilder();
        SqlSessionFactory ssf = ssfb.build(TestCase.class.getClassLoader()
                .getResourceAsStream("SqlMapConfig.xml"));
        SqlSession session = ssf.openSession();
    }

    @Test
    public void test1(){
        Emp emp = new Emp();
        emp.setName("Eric");
        emp.setAge(new Double(22.0));
        session.insert("test.save",emp);
        session.commit();
    }

开始以为是配置文件出错,但是仔细检查没有问题,后来在test1方法中测试打印了一下session对象,发现其为null。我又尝试着在init()方法中打印了session对象,发现它为

org.apache.ibatis.session.defaults.DefaultSqlSession@2669b199,不为null。

于是我将代码修改为:

private SqlSession session;

    @Before
    public void init(){
        SqlSessionFactoryBuilder ssfb = new SqlSessionFactoryBuilder();
        SqlSessionFactory ssf = ssfb.build(TestCase.class.getClassLoader()
                .getResourceAsStream("SqlMapConfig.xml"));
        SqlSession session = ssf.openSession();
        System.out.println(ssfb);
        System.out.println(ssf);
        System.out.println(session);
        Emp emp = new Emp();
        emp.setName("Eric");
        emp.setAge(new Double(22.0));
        session.insert("test.save",emp);
        session.commit();
    }

直接在init()中执行插入,发现成功。
这里我很疑惑,不知道为什么会这样,因为之前学springmvc时,我都是用@before注解的方法初始化spring容器,其他测试方法没有出现过空指针异常。

靠,真相了,原来SQLSession没有被定义成全局变量。(留下了坚强的泪水)

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值