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容器,其他测试方法没有出现过空指针异常。

猜你喜欢

转载自blog.csdn.net/sjc7140/article/details/83501696