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 接口实现的难度,属于适配器设计模式体现,它主要有三个实现类

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

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

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

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

2.StatementHandler 的创建和源码分析

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容