mybatis-spring源码分析(有图解)

springboot所有的中间件配置都是从 xxxAutoConfiguration开始的。mybatis也不例外。MybatisAutoConfiguration最重要的3个方法

接下来按照执行顺序,逐一讲解

一、MapperScannerRegistrarNotFoundConfiguration

这个类不一定会执行,主要取决于

1、那么这个bean什么时候会有,什么时候会没有呢?这取决于你用什么方式扫描方式。我们通常有2种方式声明mapper:

    ①在启动类添加@MapperScan

        种就会生成MapperFactoryBean,也就是说用这种方式不会走这个静态内部类

   ②在每个mapper接口添加@Mapper

        用这种方式就会走这个静态内部类(本文主要介绍这种,其实2种最后都会走到同一个类里去)

PS: 如果你调皮2种都加,那么项目都启动不起来

2、这个静态内部类调用另一个静态内部类

实例化了一个classpathmapperscanner,指定了扫描注解类型(Mapper),并且进行扫描

来看看doScan里做了什么

扫描完mapper,紧接着又调用processBeanDefinitions

核心就以下两行,这里涉及到beandefinition和factorybean的知识。粗略来说,就是扫描获得每个mapper的beandefinition,然后把他的类型设置成mapperFactoryBean,并且设置构造函数参数。

mapperFactoryBean

二、sqlSessionFactory

factory.getObject一路点下去,点到buildSqlSessionFactory方法

该方法很长,但是核心的就是这一句。这句详细的我就不点进去了,大致是扫描我们写的xml文件,然后每一个sql都生成一个statement,这些statement存到configuration里,最后会把这个configuration放到sqlsessionfactory里,结束

三、SqlSessionTemplate

对动态代理熟悉的同学,肯定知道,精华就在invohandler里,进去看看吧

我们重点看看执行sql时候的方法,由于sqlsession是一个接口,他的实现类是defaultsessionfactory,我们随便找一个方法看看

这里从configuration里拿出statement,然后query方法一路跟下去,最终执行了jdbc

结语:本文是mybatis-spring大致流程

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值