前言:对于一个3年工作经验的程序员来说,最有优势的是知识面广、学习能力强、对源码的关注;最近面试遇到问spring源码 Mybatis源码。之前也有对源码有关注。像spring源码里面对设计模式 原则用的活灵活现。所以决定理解一下作者在玩框架的时候 怎么个玩法。
一、下面是一段Mybatis测试代码
/**
* 通过 SqlSession.getMapper(XXXMapper.class) 接口方式
* @throws IOException
*/
@Test
public void testSelect() throws IOException {
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);//1
SqlSession session = sqlSessionFactory.openSession(); // ExecutorType.BATCH 2
try {
BlogMapper mapper = session.getMapper(BlogMapper.class);//3
Blog blog = mapper.selectBlogById(1);
System.out.println(blog);
} finally {
session.close();
}
}
mybatis测试代码可知,首先通过获取流--》获取SqlSessionFactory--》获取SqlSession--》获取接口代理对象。如下是这几个步骤的时序图。
二、序号1时序图
三、序号2时序图
四、序号3时序图
五、mybatis主要是对配置文件的解析,对解析的文件信息存放在configuration对象中。