第四章 Mybatis 核心组件介绍

一、Configuration Executor MappedStatement

MyBatis 3 的核心组件中,ConfigurationExecutor 和 MappedStatement 是非常关键且相互关联的部分,它们共同构成了 MyBatis 框架的基础架构,用于管理 SQL 映射和执行数据库操作。

Configuration

Configuration 类是 MyBatis 所有配置信息的封装。它包含了 MyBatis 运行时所需的所有配置,如数据库连接信息(DataSource)、事务管理器(TransactionManager)、类型处理器(TypeHandlers)、映射器(Mapper)的注册信息等。

  • 数据源(DataSource):用于获取数据库连接。
  • 事务管理器(TransactionManager):管理数据库事务。
  • 映射器(Mappers):注册了所有的 Mapper 接口和对应的 XML 映射文件。
  • 类型别名(Type Aliases):用于简化类型名称的引用。
  • 插件(Plugins):允许用户自定义拦截器,以修改 MyBatis 的行为。

Executor

Executor 是 MyBatis 用来执行 SQL 语句的接口。它是 MyBatis 框架中所有数据库操作的核心。Executor 接口定义了多个方法来执行不同类型的 SQL 语句,如更新(update)、查询(query)、获取映射器(getMapper)等。

MyBatis 提供了几种不同类型的 Executor 实现,以适应不同的应用场景,如:

  • SimpleExecutor:简单执行器,它每次执行更新或查询时,都会开启一个新的 SqlSession。
  • ReuseExecutor:重用执行器,它会对 SqlSession 内的所有操作使用同一个 Statement。
  • BatchExecutor:批处理执行器,它用于将多个更新操作组合成一个批次执行,以减少与数据库的交互次数。

MappedStatement

MappedStatement 是 MyBatis 中最重要的一个类,它封装了 SQL 语句的所有信息,包括 SQL 语句本身、输入参数的类型、返回结果的类型、是否使用缓存等。在 MyBatis 中,每一个 <select><insert><update><delete> 标签都会被解析成一个 MappedStatement 对象,并存储在 Configuration 对象中。

当执行 SQL 语句时,MyBatis 会根据 Mapper 接口的方法名和参数类型等信息,在 Configuration 中查找对应的 MappedStatement 对象,然后利用 Executor 来执行这个 MappedStatement 封装的 SQL 语句。

总结

ConfigurationExecutor 和 MappedStatement 是 MyBatis 框架中的核心组件,它们共同协作以完成 SQL 语句的映射和执行。Configuration 提供了框架的全局配置信息,Executor 负责执行 SQL 语句,而 MappedStatement 则封装了具体的 SQL 语句信息和执行参数。这三个组件的紧密配合,使得 MyBatis 能够以灵活且高效的方式处理数据库操作。

二、StatementHandler TypeHandler ParameterHandler ResultSetHandler

在 MyBatis 3 中,StatementHandlerTypeHandlerParameterHandler 和 ResultSetHandler 是四个关键的处理器(Handler)接口,它们在执行 SQL 语句和处理结果集的过程中扮演着重要的角色。这些处理器共同协作,确保 MyBatis 能够高效地将 Java 对象与数据库进行交互。

StatementHandler

StatementHandler 是 MyBatis 中用于处理 SQL 语句的执行的接口。它封装了 JDBC 的 Statement 或 PreparedStatement,并提供了执行 SQL 语句的方法。StatementHandler 负责配置 SQL 语句的参数、执行 SQL 语句,并处理执行过程中可能出现的异常。

TypeHandler

TypeHandler 是 MyBatis 中用于处理 Java 类型和 JDBC 类型之间转换的接口。它定义了如何将 Java 类型转换为 JDBC 类型(用于设置 SQL 语句的参数),以及如何将 JDBC 类型转换为 Java 类型(用于从结果集中获取数据)。MyBatis 提供了许多内置的 TypeHandler 实现,用于处理常见的 Java 类型和 JDBC 类型的转换,同时也支持用户自定义 TypeHandler 以满足特殊需求。

ParameterHandler

ParameterHandler 是 MyBatis 中用于处理 SQL 语句参数的接口。它负责将用户传递的参数值设置到 SQL 语句的占位符中。ParameterHandler 通过与 TypeHandler 的协作,将 Java 类型的参数转换为 JDBC 类型的参数,并设置到 PreparedStatement 的相应位置。

ResultSetHandler

ResultSetHandler 是 MyBatis 中用于处理 SQL 查询结果集的接口。它负责将 JDBC 的 ResultSet 转换为 Java 对象或集合。ResultSetHandler 通过与 TypeHandler 的协作,从 ResultSet 中读取数据,并将其转换为 Java 类型的值。然后,它根据 Mapper 接口方法的返回类型,将这些值组装成相应的 Java 对象或集合。

总结

这四个处理器在 MyBatis 的执行流程中各司其职,共同完成了 SQL 语句的执行和结果集的处理。StatementHandler 负责 SQL 语句的执行,ParameterHandler 负责处理 SQL 语句的参数,ResultSetHandler 负责处理 SQL 查询的结果集,而 TypeHandler 则在它们之间起到了桥梁的作用,负责 Java 类型和 JDBC 类型之间的转换。这四个组件的紧密配合,使得 MyBatis 能够以高效且灵活的方式处理数据库操作。

--end--

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值