黑马程序员技术交流社区

标题: java.lang.NullPointException报错解决办法 [打印本页]

作者: 庭院深深深几许    时间: 2019-3-7 10:47
标题: java.lang.NullPointException报错解决办法
报错代码:
[Java] 纯文本查看 复制代码
public class UserDaoTest{
   
    private SqlSessionFactory sqlSessionFactory;
   
    //此方法在执行testFindUserById() 之前执行
    @Before
    public void setUp() throws Exception {
        //创建sqlSessionfactory
        //MyBatis配置文件
        String resource="SqlMapConfig.xml";
        //得到配置文件流
        InputStream inputStream=Resources.getResourceAsStream(resource);
        //创建会话工厂,传入MyBatis的配置文件信息
        SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
    }

    @Test
    public void testFindUserById() throws Exception {
        //创建UserDao的对象
        UserDao userDao =new UserDaoImpl(sqlSessionFactory);
        //调用UserDao的方法
        User user =userDao.findUserById(4);
        
        System.out.println(user.toString());
    }

}

解决方法:
[Java] 纯文本查看 复制代码
public class UserDaoTest{
   
    private SqlSessionFactory sqlSessionFactory;
   
    //此方法在执行testFindUserById() 之前执行
    @Before
    public void setUp() throws Exception {
        //创建sqlSessionfactory
        //MyBatis配置文件
        String resource="SqlMapConfig.xml";
        //得到配置文件流
        InputStream inputStream=Resources.getResourceAsStream(resource);
        //创建会话工厂,传入MyBatis的配置文件信息
        sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
    }

    @Test
    public void testFindUserById() throws Exception {
        //创建UserDao的对象
        UserDao userDao =new UserDaoImpl(sqlSessionFactory);
        //调用UserDao的方法
        User user =userDao.findUserById(4);
        
        System.out.println(user.toString());
    }

}

  【原因分析】
  @Before的方法在@Test方法之前执行,自己直接拷贝了之前的代码,在类中已经在两个方法之外定义了private SqlSessionFactory sqlSessionFactory;
  本意是两个方法共用,但自己拷贝了之前代码,却忽略了@Before中会重新new一个对象,SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream); 最后debug才发现错误。








欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2