原创 鲁班大叔 源码阅读网
文本学习目的是弄清楚StatementHandler设计理念,以及它的实现结构。
一、定义
顾名思议,StatementHandler 就是用于封装JDBC中Statement的操作。即声明SQL、设置参数、执行SQL等。通常一次SQL执行完之后就要关闭它,最多它的生命周期也不会超过一次事务的范围。StatementHandler 也是一样,执行器中每执行一次SQL操作,都会通过Configuration 构建一个新的StatementHandler,用完就丢弃了。它们是1比N的关系。
1.设计理念
如果将StatementHandler中的逻辑,放到执行器中可不可以? 当然可以,但是放到基础执行器,还是放到其它执行器?放到基础执行器,基础执行器逻辑将会非常臃肿,事务、缓存等… 放到实现又会产生大量重复代码。所以MyBatis 作者才设计出StatementHandler 来封装Statement操作。
2.主流程中的位置
StatementHandler 是在每次执行SQL操作时创建,通过Configuration创建。然后在基于它执行Sql声明、参数处理、Sql调用、结果集处理等操作。它与执行器的关系是1:N。
3.功能职责
StatementHandler 接口共有8个方法,前面6个方法是Statement相关处理,后两个是对动态数据源和获取参数处理器。
方法 | 描述 |
---|---|
prepa |