之前介绍过,Executor接口定义了对象操作库操作的基本方法:select/update/insert/delete/commit/rollbak/close。Mybatis对Executor接口的实现主要采用了模板模式和装饰模式两种设计模式。
Executor类关系
其中CloseExecutor为一个类的内部了,而且是private的,先不讨论!
- BaseExecutor为模板模式中的模板类。这个类在Executor接口实现中非常重要,其实现了Executor的大部分方法。他的子类只要实现三个方法即可,其中两个是doUpdate和doSelect方法,子类在实现这两个方法时直接操作数据库即可,其余的工作交由BaseExecutor完成。
- CachingExecutor是一个Executor的装饰器,给一个Executor增加了缓存的功能。
模板模式和装饰模式前面分析加载Configuration中也用到,说明这个设计模式的重要性,这两种设计模式也在Spring中很多地方采用。作为java程序员应该详细解读并应用这两种设计模式!
Executor接口主要方法
public interface Executor {
//执行update/insert/delete
int update(MappedStatement ms, Obj