问题:
首先上问题代码
private SqlSessionFactory sqlSessionFactory;
public SqlSession getSqlSession() {
//获取sqlSessionFactory对象
try {
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.class.getResourceAsStream(resource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
} catch (Exception ex) {
System.out.println(ex);
}
//使用sqlSessionFactory.openSession打开数据库链接返回sqlSessionFactory对象
return sqlSessionFactory.openSession();
}
今天开始学习mybatis的查询数据,通过读取xml配置来获取sqlSessionFactory,谁知道一直在报空指针的异常。刚开始我以为是new SqlSessionFactoryBuilder().build()方法的问题,在网上尝试了各种方法都无法解决。
我一度以为是我的配置文件有问题,重新写了两遍配置文件,还是在报错。
后来设置断点时发现,在inputStream这里就返回的null,根本就没有获取到xml配置文件!!
最后经过尝试发现要将这段
String resource = "mybatis-config.xml";
在文件名前添加“/”修改为
String resource = "/mybatis-config.xml";
或者使用完整地址才可以正确定位到配置文件
但是通过查看别人的代码我发现很多人并没有添加“/”符号依旧可以读取到文件
后来使用System.out.println(Resources.class.getResource("/"));可以查看到资源的路径
路径也是带有“/”符号的,作为一个小白,一整个晚上就耗在一个斜杠上了,虽然问题解决了,但是并不是很明白为什么,可能是框架的版本问题,也可能是我的某个地方的资源包或者文件有问题,如果有大佬看到文章,希望可以解释一些。