mybatis 插件
分页功能 功能字段统一赋值 性能监控日志
mybatis重要的接口和类 Executor
mybatis 分层 接口层 数据处理层 框架支撑层
mybatis 数据流程处理
SQL执行过程 mapperProxy sqlSession Executor 参数handler 结果handler typeHandler
mybatis 缓存实现源码解析
mybatis 亮点 1.设计非常可以,架构设计非常清晰的 持久层框架。 工厂方法模式,适配器模式,装饰器模式,代理模式。
2.很多扩展点。 插件机制,对第三方日志框架和 第三方数据源的 兼容
3.上手快,易用性和可靠性。
阅读mybatis 源码,理解 mybatis原理。 竞争力。
开源框架: 基本使用 底层原理 架构方案模式
架构设计:
接口层: SqlSession Mapper SqlSessionFactory
核心处理层: 配置解析 参数映射 SQL解析 SQL执行 结果集映射 插件
基础层模块: 类型转换模块,日志模块,反射工具模块,Bingding模块 资源加载模块,数据源模块,缓存模块-一级缓存,二级缓存 解析器模块,事务管理模块
核心处理层: 配置解析 参数映射 SQL解析 SQL执行 结果集映射 插件 涉及Mybatis的初始化和执行一条SQL语句的全流程。
第一个:配置解析 第二个:SQL解析和 scripting 模块。 动态SQL(亮点),scripting 模块 负责动态生成SQL的核心模块。 第三个:SQL执行。 比较核心有: Executor StatementHandler ParameterHandler 和 ResultSetHandler
其中,Executor 会调用事务管理模块 实现事务的相关控制, 同时会通过缓存模块 管理一级缓存和二级缓存。SQL语句 真正执行将会由 StatementHandler实现 。
StatementHandler会 先依赖 Parameterhandler 进行 SQL 模板的实参绑定, 然后由 java.sql.Statement 对象 将SQL语句 与及 绑定好的实参传到 数据库执行, 从数据库中拿到 ResultSet , 最后, 由 ResultSethandler将 ResultSet映射成 Java 对象 返回给调用方。
接口层:
接口层是 mybatis 暴露给调用的接口集合。 sqlSession接口: 获取mapper 代理, 执行 Sql 语句 , 控制事务开关。