Mybatis架构源码分析流程
2017-08-18 09:37:19 291 举报
Mybatis架构源码分析,架构图,流程图。
作者其他创作
大纲/内容
Configuration
利用jdk的动态代理方法生成Mapper最终的代理类。
XMLConfigBuilder
1、通过configuration提供的方法获取StatementHandler,委托给StatementHandler执行。2、封装PreparedStatement,最后执行需要
获取Configuration中封装的MapperRegistry(MapperRegistry注册了所有所有的mapper接口对应生成代理类的MapperProxyFactory)
调用mapper方法
1、利用XMLConfigBuilder将xml的所有内容封装到Configuration对象中。2、Configuration是xml配置最终的操作类
MapperProxy
sqlSession最终委托给CachingExecutor执行
mybatis的主配置xml文件
MapperProxyFactory
1、将Document封装到XPathParser中。
代理类执行sql过程
StatementHandler
需要操作的Mapper
CachingExecutor
xml文件
MapperMethod
1、调用excute方法,进行逻辑的执行。2、根据MapperMethod封装的不同类型的方法(CRUD)调用sqlSession不同的方法。
SqlSessionFactory
1、执行实现的invoke方法。2、将invoke传递的method参数以及Configuration等其他参数封装成MapperMethod
SimpleExecutor
生成Mapper的代理类
sqlSession中封装了Configuration,委派给Configuration去操作
PreparedStatement
mybatis的准备流程
1、判断是否存在缓存,如果存在缓存,则委托给TransactionalCacheManager从缓存中获取结果。2、如果不存在缓存,则委托给SimpleExecutor执行;
sqlSession.getMapper(TestCodeMapper.class)
1、利用MapperProxyFactory构造出MapperProxy,也就是jdk代理的最终InvocationHandler的实现类。
1、sqlSession是最终操作数据库的类。2、sqlSession封装了configuration、Executor。Excutor是sqlsessin最终操作数据库委派的类。
SqlSession
1、上一步的XParhParser封装到XMLConfigBuilder中2、初始化Configuration
委托给PreparedStatement去执行
Document
通过获取到Mapper的对象(这里实际是代理类),调用想要操作的方法
1、通过读取xml文件到输入流InputStream中。2、通过jdk的DocumentBuilder解析inputStream,得到封装了xml的Document。
生成Mapper代理类过程
MapperRegistry
XPathParser
1、将Configuration封装到SqlSessionFactory中。2、SqlSessionFactory是创建sqlsession的工厂
1、MapperRegistry中有一个map结构的成员变量,key为Mapper的Class,value为MapperProxyFactory。2、根据class的key获取MapperProxyFactory对象。
最终交给jdk的PreparedStatement执行。
0 条评论
下一页