mybatis 拦截器 执行流程

在 MyBatis 中,当执行一个 SQL 语句时,会涉及到一系列的组件和接口来协同完成这个任务。你提到的 ExecutorParameterHandlerResultSetHandlerStatementHandler 是这些组件中的核心部分。以下是这些组件在 MyBatis 中如何协同工作来执行 SQL 语句的简要概述:

1. Executor

Executor 是 MyBatis 的核心执行器,它负责调度和管理 StatementHandlerParameterHandlerResultSetHandler。当你通过 MyBatis 的 API(如 SqlSessionselectOneselectListupdateinsert 等方法)来执行 SQL 时,实际上是调用了 Executor 的相应方法。

  • update: 执行更新(INSERT、UPDATE、DELETE)操作。
  • query: 执行查询操作。
  • flushStatements: 清除缓存中的语句。
  • commitrollback: 提交或回滚事务。
  • getTransaction: 获取当前事务。
  • close: 关闭执行器。
  • isClosed: 检查执行器是否已关闭。

2. StatementHandler

StatementHandler 负责处理 SQL 语句的生成、参数设置、执行和结果集处理。它封装了 JDBC 的 Statement 对象。

  • prepare: 准备 SQL 语句(可能包括动态 SQL 的解析和生成)。
  • parameterize: 设置 SQL 语句的参数。
  • batch: 添加 SQL 语句到批量操作中。
  • updatequery: 执行更新或查询操作。

3. ParameterHandler

ParameterHandler 负责处理 SQL 语句的参数。当调用 StatementHandlerparameterize 方法时,会由 ParameterHandler 来设置参数。

  • getParameterObject: 获取要设置的参数对象。
  • setParameters: 将参数对象设置到 SQL 语句中。

4. ResultSetHandler

ResultSetHandler 负责处理查询结果集。当执行查询操作时,ResultSetHandler 会处理 JDBC 的 ResultSet 对象,将其转化为 Java 对象(如 List、Map 或自定义的 JavaBean)。

  • handleResultSets: 处理结果集,将其转化为 Java 对象。
  • handleOutputParameters: 处理存储过程的输出参数(如果有的话)。

执行流程

  1. 调用 MyBatis API(如 SqlSession 的方法)来执行 SQL 语句。
  2. Executor 接收到请求后,根据请求类型(更新或查询)来创建或获取一个 StatementHandler
  3. StatementHandler 准备 SQL 语句(可能包括动态 SQL 的解析和生成),并创建或获取一个 ParameterHandler 来处理参数。
  4. ParameterHandler 设置 SQL 语句的参数。
  5. StatementHandler 执行 SQL 语句。
  6. 对于查询操作,StatementHandler 创建或获取一个 ResultSetHandler 来处理结果集。
  7. ResultSetHandler 将结果集转化为 Java 对象并返回给调用者。

这个流程是一个简化的概述,MyBatis 的实际执行过程可能会更复杂,并涉及到更多的细节和组件。但上述流程应该能帮助你理解 MyBatis 如何协同工作来执行 SQL 语句。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值