想要自己走一下试试。
public static void main(String[] args) {
SqlSession sqlSession = null;
try {
InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
// 查询数据库内容
sqlSession = sqlSessionFactory.openSession();
Blog blog = sqlSession.selectOne("me.aihe.dao.BlogMapper.selectBlog",1);
System.out.println(blog);
} catch (IOException e) {
e.printStackTrace();
}finally {
if (sqlSession != null) {
sqlSession.close();
}
}
}
//1.读取配置文件
InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
Resources类
public static InputStream getResourceAsStream(String resource) throws IOException {
//classLoader默认为空
return getResourceAsStream((ClassLoader)null, resource);
}
public static InputStream getResourceAsStream(ClassLoader loader, String resource) throws IOException {
//调用ClassLoaderWrapper读取配置文件
InputStream in = classLoaderWrapper.getResourceAsStream(resource, loader);
if (in == null) { //没有读取到文件抛出异常
throw new IOException("Could not find resource " + resource);
} else { //返回流
return in;
}
}
ClassLoaderWrapper类
public InputStream getResourceAsStream(String resource, ClassLoader classLoader) {
return this.getResourceAsStream(resource, this.getClassLoaders(classLoader));
}
//创建classloader对象
ClassLoader[] getClassLoaders(ClassLoader classLoader) {
return new ClassLoader[]{classLoader, this.defaultClassLoader, Thread.currentThread().getContextClassLoader(), this.getClass().getClassLoader(), this.systemClassLoader};
}
//把配置文件和生成的 classloader对象传过来
InputStream getResourceAsStream(String resource, ClassLoader[] classLoader) {
ClassLoader[] var3 = classLoader;
int var4 = classLoader.length;
for(int var5 = 0; var5 < var4; ++var5)