前言:在Spring-boot结合Mybatis,我们只需要配置一些数据库连接的基本信息,写好Mapper和Dto就可以跑起来了。但是它是如何帮我们完成自动配置,并且执行我们的sql语句的呢?我们一起来看看吧。
spring-boot.version:2.3.7.RELEASE
mybatis-spring-boot-starter2.1.4
MyBatisAutoConfiguration类是Mybatis的自动配置程序,在Mybatis启动时,开始自动配置。
第一步:启动核心MyBatisAutoConfiguration&&SqlSessionFactory
MyBatisAutoConfiguration会在有SqlSessionFactory类的情况下开始。
第二步(合并图中第二步和第三步):拉取配置和Mapper.xml(附:SqlSeesion)
SqlSessionFactory会调用Configuration类,Configuration类会读取application.properties来获取Mybatis配置信息
SqlSessionFactory还会尝试去扫描mapper.xml的位置。
而SqlSessionFactory会创建SqlSession(默认DefaultSqlSession)。
SqlSession本身不能直接操作数据库,它是通过底层的Executor执行器接口来操作数据库的。Executor接口有两个实现类,一个是普通执行器,一个是缓存执行器(默认)。Executor执行器要处理的SQL信息是封装到一个底层对象MappedStatement中。该对象包括:SQL语句、输入参数映射信息、输出结果集映射信息。其中输入参数和输出结果的映射类型包括java的简单类型、HashMap集合对象、POJO对象类型。
第三步(在图中为第四步与第五步):怎样实现Mapper接口
MyBatisAutoConfiguration去调用MapperScannerConfigurer去扫描有哪些你写的@Mapper类,创建并由MapperProxy去实现Mapper接口
这样我们配置的文件就和Mybatis产生关联啦。
(本人技艺不精,学识肤浅,若有错漏,欢迎指正)