MyBatis 四大组件之StatementHandler

StatementHandler是四大组件最重要的一个对象,负责操作Statement对象与数据库进行交流,在工作时还会使用ParameterHandler 和 ResultSetHandler 对参数进行映射,对结果进行实体类的绑定

MyBatis 四大组件之StatementHandler

我们在搭建原生JDBC的时候,会有这样一行代码

Statement stmt=conn.createStatement();//

也可以使用PreparedStatement来做

这行代码创建的 Statement 对象或者是 PreparedStatement 对象就是由StatementHandler进行管理的。


prepare: 用于创建一个具体的 Statement 对象的实现类或者是 Statement 对象

parametersize: 用于初始化 Statement 对象以及对sql的占位符进行赋值

update: 用于通知 Statement 对象将 insert、update、delete 操作推送到数据库

query: 用于通知 Statement 对象将 select 操作推送数据库并返回对应的查询结果

StatementHandler的继承结构


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

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

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

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

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

StatementHandler 对象创建以及源码分析

Configuration 中的 newStatementHandler 是由执行器中的查询、更新(插入、更新、删除)方法来提供的,StatementHandler 其实就是由 Executor 负责管理和创建的

query方法:

Update方法:


你可能感兴趣的:(MyBatis 四大组件之StatementHandler)