mybaits源码分析(八) StatementHandler的详解
概述:StatementHandler是主要负责处理MyBatis与JDBC之间Statement的交互,通俗而言就是负责操作Statement对象与数据库之间的交互。其执行过程中主要依赖ParameterHandler和ResultSetHandler进行参数绑定和结果实体类绑定。
一、类介绍
1、StatementHandler的类层级
StatementHandler: 顶级接口, 定义了update、query、parameterize、prepare等方法。
BaseStatementHandler:基础实现,负责创建ParameterHandler和ResultSetHandler。
PreparedStatementHandler:预处理语句实现,
SimpleStatementHandler: 简单语句实现,
CallableStatementHandler: 存储过程实现。
RoutingStatementHandler: 路由包装,根据不同的类型创建不同的实现作为delegate供实际实现方法调用。
2、构造函数
StatementHandler的构造函数主要是传入了实际执行中需要的一些参数,以及创建了参数处理和结果处理器。
protected BaseStatementHandler(Executor executor, MappedStatement mappedStatement, Object parameterObject, RowBounds rowBounds, ResultHandler resultHandler, BoundSql boundSql) {
this.configuration = mappedStatement.getConfiguration();
this.executor = executor;
this.mappedStatement = mappedStatement;
this.rowBounds = rowBounds;
this.typeHandlerRegistry = configuration.getTypeHandlerRegistry();
this.objectFactory =