报错代码:
[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才发现错误。
|