栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Mybatis

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Mybatis

初衷:1.总结方便以后复习

2.百度的各种文章太零散且多为复制粘贴(各种水经验等恶心人操作)


先从简单加载语句 渐入源码(上图为复制来的)

 重点:因为源码build模式底层会构建非常多对象,所以我会单行代码分析到结尾,探究这一行代码底层究竟做了什么事,如果要全部分析整个加载过程,内容会非常多。后期可能会继续写文章(虽然个人觉得非常麻烦)。

一. SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

 build(inputStream)方法最终会执行我框起来的这一块。而且另外两个形参为空。实际只有reader形参有值

委托XMLConfigBuilder来解析xml文件,并构建,追进new XMLConfigBuilder(..);
 

 

1. 这里我们看到此处又 new XMLMapperEntityResolver() 这里只是构建对象,这个类先不管它是干嘛的,后面用到会详解。

2.追进new XpathParser(..)

 晕了吗?一个对象各种调用?这里形参 reader(配置文件转换的流),validation=true,variables=null,entityResolver(上上个图new的对象)

接下来追进commonConstructor(..)

 到这里 这个类里面的属性开始赋值了(值是什么就不用我多说了)下面 追进newInstance()方法

 

 框框的 if()语句不会执行

 这块重点记住返回了一个xpathFactory,我们后面可以推测这块代码做了什么事情

 这一块,我也不清楚做了什么,只知道是XPathParser类的xpath属性赋值了,后面用到的话,我们可以反推猜测这个属性到底干嘛用

 到这里这个箭头的方法 就调用结束了 ,createDocument(..)方法,看名字意思是创建Document,形参是配置文件转换的流对象,这里我也只能推测是把 流转换成了某个特定的映射对象

所以XPathParser的document属性 现在有值了,是流转换成的映射对象

后期代码能力上升,可能会单独开一篇文章去解读,这块转换到底如何做到的

 开始追进去的构造方法是最上面这个,然后会合并到最后这个构造方法,横线处的形参为null

这里调用了super构造器

  写到这我觉得好累,因为其中各种调用还有一些难以解读的源码。有点想水过去了

 箭头的这个我就不追进去了,读者可以试着自己追进去看看,相比之前的源码更容易懂

此时XMLConfigBuilder类的parser属性 可以找到 刚刚 xml文件转换成流--再转换成Document对象等等操作后的各种属性(这里建议读者阅读源码时候做笔记,不然难理解我说的)

这个方法结束,就回到了下图,下面开始走箭头这行代码(不得不吐槽真xx复杂)

 这里更是复杂。。代码量众多,下一篇文章继续追进吧。。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1007116.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号