没有一瞬间的脱胎换骨,生命是一次次的试探,也是一场且行且至的寻觅。 ——岚清若兮逸世凌虚
对于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中,使用的是引用,主要操作的就是数据,不应该实例化对象。