今天我主要来对Mybatis的底层源码进行分析,主要是以下4行代码:
InputStream is=Resources.getResourceAsStream("mybatis-config.xml"); SqlSessionFactory sqlSessionFactory =new SqlSessionFactoryBuilder().build(is); SqlSession session = sqlSessionFactory.openSession(); UserMapper mapper1 = session.getMapper(UserMapper.class);
下面我们来分行介绍一下这些代码
-
获取传入的XML文件
刚开始这第一行,首先调用getResourceAsStream(String resource)方法,传入mybatis-config.xml文件
public static InputStream getResourceAsStream(String resource) throws IOException {
return getResourceAsStream(null, resource);
}
然后该方法里面又调用了本类中的两个参数的getResuorceAsStream(ClassLoader loader,String resource)方法。
通过classLoaderWrapper.getResourceAsStream(resource, loader)方法来获取流,
再调用getResourceAsStream(resource, loader)方法,然后再调用了本类中的getResourceAsStream(String resource, ClassLoader[ ] classLoader)方法
最后判断类加载器中所读的流是否为null,如果不为null,则返回InputStream对象。