0 参考
https://blog.csdn.net/javageektech/article/details/96539536
https://www.jianshu.com/p/86289c7c8237
1 SQL的执行
-
创建 StatementHandler
-
创建 Statement
-
在 StatementHandler中调用 Statement 的SQL执行方法 execute
-
调用结果处理器 resultHandler 处理返回结果
2 StatementHandler 与 Statement
MappedStatement—>Configuration—>StatementHandler
StatementHandler handler = configuration.newStatementHandler(xxx);
2.1 Executor: 创建处理器 StatementHandler
2.1.1 三种StatementHandler
- SimpleStatementHandler
- ParparedStatementHandler
- CallableStatementHandler
2.1.2 RoutingStatementHandler
MyBatis 真正使用的实现类,根据statementType选择要创建的Handler
2.2 Executor: handler作为参数,调用prepareStatement 方法
2.3 Handler: 调用prepare方法
2.4 Handler: instantiateStatement
instantiateStatement ,是一个抽象方法由子类去实现,不同的 Handler 通过Connection 创建不同类型的 Statement 对象