Version: Next
Mybatis执行流程剖析
Resources获取加载全局配置文件,实例化SqlSessionFactoryBuilder
Resources.getResourceAsStream("mybatis-config.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
Build()方法解析配置文件流,调用XMLConfigBuilder
XMLConfigBuilder对象调用parse()方法解析为Configuration对象
SqlSessionFactory实例化
SqlSession sqlSession = sqlSessionFactory.openSession();
获取Transaction事务管理器,获取Executor执行器
流程图
xml文件对应Mapper接口,这个Mapper接口的工作原理是什么
- xml文件中的
namespace
值写的就是mapper接口的全限定名 - 接口方法内设置的参数,就是要传递给sql语句的参数
- Mapper接口没有实现类
- 当调用接口方法时,接口全限定名+方法名拼接字符串作为key值,可以唯一定位一个MappedStatement
- xml里的select、insert标签等,每个都会被解析为一个MappedStatement对象
- Mapper接口中的方法不能被重载,因为要使用接口全限定名+方法名的方式唯一确定一个MappedStatement
- Mapper接口的工作原理是JDK动态代理,Mybatis运行期会使用JDK动态代理为Mapper接口生成代理对象,代理对象会拦截接口方法,转而执行MappedStatemnt中的SQL语句,然后将SQL执行结果返回