课程主题
改造mybatis手写框架
阅读mybatis源码
课程目标
1.配置文件加载阶段,如何将sql信息封装到合适的对象中(SqlSource和SqlNode)
2.在sqlsession执行阶段,如何对SqlSource中未处理的sql节点信息(动态标签和#{}、${}这样的sql信息)进行解析处理
3.掌握如何阅读源码(不只是mybatis的源码)
4.通过阅读mybatis源码,结合我们自己写的代码,进行对比(课下)
课程内容
1.配置文件加载阶段,要分清各个SqlNode,将各自需要管理的sql内容进封装,此时不调用SqlNode的apply方法。
源码应该如何看?
1.先找入口(大流程入口,小流程入口)
大流程入口,也就是程序的入口,只有一个
小流程入口,是大流程中的不同分支,根据经验进行确定入口
2.确定主线(总的主线和分支主线)
3.要参考别人的经验
4.要备好翻译词典
mybatis的总入口:
@Test
public void testQueryUserById2() {
// 1. 指定全局配置文件的路徑
String resource = "SqlMapConfig.xml";
// 2. 读取全局配置文件
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
UserDao userDao = new UserDaoImpl(sqlSessionFactory);
User param = new User();
param.setId(1);
param.setUsername("詹哥");
User user = userDao.queryUserById2(param);
System.out.println(user);
}
配置文件加载流程(Configuration的加载流程)
执行流程(SqlSession的执行流程)
在这两大流程里面,最复杂的就是SqlSource和SqlNode的理解
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。