MyBatis四大核心对象之StatementHandler

StatementHandler是MyBatis四大核心对象之一,是专门处理数据库汇报的组件,封装了JDBC Statement操作,负责对JDBC statement 的操作。

1.Executor继承体系

Executor继承体系

如上图所示,StatementHandler分别有两个实现类 BaseStatementHandler 和RoutingStatementHandler,BaseStatementHandler 有三个实现类, 他们分别是 SimpleStatementHandler、PreparedStatementHandler 和 CallableStatementHandler。

RoutingStatementHandler : RoutingStatementHandler 并没有对 Statement 对象进行使用,只是根据StatementType 来创建一个代理,代理的就是BaseStatementHandler的三种实现类。在MyBatis工作时,使用的StatementHandler 接口对象实际上就是 RoutingStatementHandler 对象。

BaseStatementHandler : 是 StatementHandler 接口的另一个实现类,它本身是一个抽象类,用于简化StatementHandler 接口实现的难度,属于适配器设计模式体现,它主要有三个实现类

SimpleStatementHandler: 管理 Statement 对象并向数据库中推送不需要预编译的SQL语句。

PreparedStatementHandler: 管理 Statement 对象并向数据中推送需要预编译的SQL语句。

CallableStatementHandler:管理 Statement 对象并调用数据库中的存储过程。

SimpleStatementHandler 和 PreparedStatementHandler 的区别是 SQL 语句是否包含变量,是否通过外部进行参数传入。SimpleStatementHandler 用于执行没有任何参数传入的 SQL,PreparedStatementHandler 需要对外部传入的变量和参数进行提前参数绑定和赋值。

2.StatementHandler 的创建和源码分析

我们继续来上篇《MyBatis四大核心对象之Executor》的query 的调用链路,StatementHandler 的创建过程如下

你可能感兴趣的:(MyBatis四大核心对象之StatementHandler)