课程主题

改造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的理解

小小____
435 声望110 粉丝

哇哈~我在那~这是哪~每日连11问


« 上一篇
thinkphp 请求
下一篇 »
Mysql