分为四个模块:
1.动态代理MapperProxy
2.SQL会话SqlSesson
3.执行器Executor
4.JDBC处理器StatementHandler
现讲述为SQL会话与执行器
一、SQL会话SqlSesson
该门面模式提供一个统一的门面接口API
该模式提供的一个基本API为增删改查,还会提供提交和关闭会话的辅助API,SqlSesson仅仅只会提供API,但不会提供具体的实现。
SqlSesson的处理交给Executor,它里面有一个属性“executor”,在执行增删改查的时候,对应的方法就会转交给执行器Executor。
二、执行器Executor
Executor只提供了两个基本功能:改、查、维护缓存。(增删改都归类于改)。同样,Executor也提供辅助功能:提交、关闭执行器、批处理刷新。
执行器实现:
1.简单执行器:SimpleExecutor(也称为默认执行器)
无论SQL是否一样,每次都会进行预编译
查询分别有五个参数:1.SQL声明映射 2.参数 3.行范围 4.结果处理器 5.动态SQL语句。
但若执行多次,该结果也会执行多次预处理操作,所以要用到第二种方法。
2.SQL声明重用ReuseExecutor:
重用执行器如下所示:
若执行大量的修改操作,则需要用到批处理。
3.批处理:BatchExecutor
注!批处理只针对修改操作(即增删改)。
修改有两个参数:1.SQL声明(MappedStatement) 2.具体SQL参数
下列arg0对应者上id,arg1对应者name
批量操作必须进行手动刷新。
如下代码:executo.doFlushStatements(false);
4.执行器抽象类:BaseExecutor
用来实现重复操作,如:一级缓存、获取连接等。