MyBatis架构

mybatis 架构 ( 重点 )
1.1 mybatis 介绍
MyBatis 本是 apache 的一个开源项目 iBatis , 2010 年这个项目由 apache software foundation 迁移到了 google code ,并且改名为 MyBatis ,实质上 Mybatis对ibatis进行一些改进。 目前mybatis在github上托管。git(分布式版本控制,当前比较流行)
 
MyBatis 是一个优秀的持久层框架,它对 jdbc的操作数据库的过程进行封装,使开发者 只需要关注 SQL 本身 ,而不需要花费精力去处理例如注册驱动、创建 connection、创建statement、手动设置参数、结果集检索等jdbc繁杂的过程代码
Mybatis通过xml或注解的方式将要执行的各种statement(statement、preparedStatemnt、CallableStatement)配置起来,并通过java对象和statement中的sql进行映射生成最终执行的sql语句,最后由mybatis框架执行sql并将结果映射成java对象并返回。
 
 
1.2 mybatis 架构

### MyBatis 架构图解析 #### 配置管理与初始化过程 MyBatis 的配置信息主要存储于 `Configuration` 类中。当应用程序启动时,通过 `SqlSessionFactoryBuilder` 使用 XML 或 Java Config 来构建 `SqlSessionFactory` 实例。在此过程中,`XMLConfigBuilder` 负责读取并解析配置文件的内容,并将其映射至 `Configuration` 对象内[^3]。 ```java Reader reader = Resources.getResourceAsReader("mybatis-config.xml"); SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(reader); ``` #### SQL 映射执行流程 对于每次查询请求,MyBatis 创建一个新的 `SqlSession` 实例来处理事务管理和 CRUD 操作。在这个阶段,SQL 语句会被编译成 `MappedStatement` 并缓存起来供后续调用重用。为了准备执行具体的 SQL 语句,MyBatis 利用了四个核心接口: - **Executor**: 执行器负责管理事务以及决定如何运行 SQL 语句(批量、延迟加载等) - **StatementHandler**: 处理 JDBC Statements 和 PreparedStatement 接口之间的交互逻辑;设置参数并通过 ParameterHandler 完成预编译操作[^5] - **ResultSetHandler**: 将结果集转换为对象列表或其他形式的数据结构返回给业务层 - **TypeHandler**: 提供了自定义类型转换的能力,使得可以在不同数据源之间无缝传递数据 ![MyBatis Architecture](https://www.baeldung.com/wp-content/ql-cache/quicklatex.com-dc8f9bdf4a2ebe6d710abafdddbeddaa_l3.png) 此图为典型的 MyBatis 工作流架构示意,展示了各个组件间的关系及其在整个生命周期内的作用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值