zoukankan      html  css  js  c++  java
  • 08_一个java.lang.NullPointException报错

    【报错代码】

    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());
        }
    
    }

    【修正代码】

    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才发现错误。

    写此文谨记再勿犯此错!

  • 相关阅读:
    学业优秀者汇总
    计算机类教学质量国家标准(含信息安全专业)
    从《构建之法》到《终身幼儿园》
    2019-2020-1 《信息安全专业导论》教学进程
    程序设计快速入门
    铜齿铁牙UP计划
    ios app 提交评审注意事项
    IOS开发之不同版本适配问题2(#ifdef __IPHONE_7_0)
    iOS:个性化UITextView(缩进,行距,铺满)
    iOS 同一设备内的应用之间资源共享的实现
  • 原文地址:https://www.cnblogs.com/HigginCui/p/5699946.html
Copyright © 2011-2022 走看看