SqlSession空指標異常
阿新 • • 發佈:2018-11-02
在學習使用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物件,發現它為
[email protected],不為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容器,其他測試方法沒有出現過空指標異常。