Mybatis源码分析,getMapper执行
一、简介
这篇文章主要用来记录自己在复习Mybatis过程中的一些心得体会
二、分析
首先解析一下Mybatis的工作流程(加载xml文件)
Mybatis工作流程
首先我们需要知道在MyBatis的核心对象中SqlSession和SqlSessionFactory都是接口
读取xml文件并传入SqlSessionFactoryBuilder的build()方法
Mybatis在SqlSessionFactoryBuilder中通过 XMLConfigBuilder类来解析配置文件最后返回一个实现了SqlSessionFactory接口的实例DefaultSqlSessionFactory
(XMLConfigBuilder类主要用来解析配置文件里面的信息,如标签、数据源等配置信息)
DefaultSqlSessionFactory类返回了一个实现了SqlSession接口的实例DefaultSqlSession
Configuration对象封装了配置文件的信息,而Executor对象里面有执行增删改查的方法
Congration对象通过MapperStatement对象以Map方式封装了Sql语句信息,
其中key由配置文件的namepase和id组成,value封装了Sql语句等信息
以下为执行getMapper时MyBatis的操作
MyBatis通过代理模式创建代理对象,从而实现通过接口的方法可以执行配置文件内的Sql语句
通过传入要代理的接口的信息创建代理类,同时后面也是通过这个接口的信息来拼接key来找到mapperstatementl里面对应的value即Sql语句信息
拼接key
最后通过key找到对应的Sql语句信息来找到对应的执行方法
最后执行SqlSession对应的CRUD方法
以上就是MyBatis通过getMapper方法执行Sql语句的流程
如果有错误或者疏漏希望各位大佬能够帮我指出,也希望大家有什么看法可以在评论区一起交流