mybatis源码分析一、mybatis的执行流程
一、mybatis架构设计
mybatis4层架构的作用?
- 第一层接口层:主要是提供增加、删除、修改、查询等接口,通过API接口对数据库进行操作
- 第二层数据处理层:主要负责SQL的 查询、解析、执行以及结果映射的处理,主要作用解析sql根据调用请求完成一次数据库操作
- 第三层框架支撑层:负责通用基础服务支撑,包含事务管理、连接池管理、缓存管理等共用组件的封装,为上层提供基础服务支撑.
- 第四层引导成:引导层是配置和启动MyBatis 配置信息的方式
2、Mybatis 的执行流程与其主要组件
- 大致执行流程
- 核心接口/类的主要功能
分工协作 | 角色定位 | 类名定义 |
---|---|---|
负责读取配置文件 | 资源辅助类 | Resources |
负责存储数据库连接信息 | 数据库资源类 | Configuration |
负责存储SQL映射定义、存储结果集映射定义 | SQL与结果集资源类 | MappedStatement |
负责解析配置文件,创建会话工厂SqlSessionFactory | 会话工厂构建者 | SqlSessionFactoryBuilder |
负责创建会话SqlSession | 会话工厂 | SqlSessionFactory |
指派执行器Executor | 会话 | SqlSession |
负责执行SQL (配合指定资源Mapped Statement) | 执行器 | Executor |
- 自定义框架流程
-
读取配置文件,定义一个resource类读取xml等配置文件,加载具体的配置信息提供一个加载流的方法Resources.getResourceAsReader
-
创建配置类configuration(核心配置类) 存放myatis-config.xml核信配置信息,MapperdStatement映射配置类主要存放mapper.xml解析出来的配置信息
-
解析配置文件利用demo4j,并创建sqlsession会话对象,创建sqlsessionfaatoryBuilder类,使用demo4j解析配置文件,将解析的配置内容存放到configuration文件中去。
-
创建sqlsessionFactory接口以及实现类DefaultSqlSessionFacotory ,创建sqlsession
-
创建sqlsession接口以及实现类DefaultSqlSession,定义对数据库的crud操作
-
创建executor接口以及实现类simpleExecutor,创建query执行jdbc代码
- mybatis类图