Mybatis源码解析(二)

没有一瞬间的脱胎换骨,生命是一次次的试探,也是一场且行且至的寻觅。 ——岚清若兮逸世凌虚

对于SqlSessionFactoryBean

对于XML的解析,对于静态的文本封装为 StaticTextSqlNode,对于Set 这种封装我们会迭代解析,对于内部的内容我们会重新new一个SqlNode,封装为MixedSqlNode,一个list集合,最后一层层,最后返回SQLNode。

最主要的就是迭代,递归解析SQLNode。

对于注解的解析,有两种,一种为Select类型,一种为SQLProvider类型,定义一个类,其中根据反射反向生成对应的方法。

对于语句的配置,如果语句为使用原生的语句,我们可以使用xml解析中的方法,另一个方式使用 <script> 进行封装,然后内部的解析依然是进行拼装。

Mybatis 底层实现,流程

配置文件如何设置,将dao的接口实例化?

  • 使用了Repository注解
  • 定义基本的扫描包路径
  • 引入SqlSessionFactoryBean,就是扫描到的xml内容

包扫描的配置类:MapperScannerConfigurer

  • 实现了BeanDefinitionRegistryPostProcessor,继承了ClassPathBeanDefinitionScanner,基本Spring中扫描路径
  • 自己写了一个扫描的类,继承了Spring中的扫描类
  • 加载配置文件中,在property中,使用的是引用,主要操作的就是数据,不应该实例化对象。

文章作者: Asxing
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Asxing !
评论
 上一篇
Java-反射 Java-反射
决定踏上高台的那一刻,便注定此生只能孤独前行。 ——冰魄林寒 Reflection 是 Java 程序开发语言的重要特征之一,是学习Jav
2018-09-07 Asxing
下一篇 
Springboot脚手架(三) Springboot脚手架(三)
在黑夜迷梦中沉睡,却不知,身旁已是灿烂花开。 ——湜霖 参数校验:常见的做法,定义一个实体: public class O
2018-09-01
  目录