Mybatis执行器
Mybatis执行过程中的四个模块:
- 动态代理MapperProxy
- SQL会话SqlSession
- 执行器Executor
- JDBC执行器StatementHandler
会话提供基础的Api功能,具体实现交给指定的executor执行
简单执行器——SimpleExecutor
- 无论sql是否一样,每次都会进行预编译
可重用执行器——ReuseExecutor
批处理执行器——BatchExecutor
-
批处理只针对修改操作进行批处理,查询操作还是会多次预编译
-
批处理操作必须手动刷新——doFlushStatements
基础执行器——BaseExecutor
- baseExecutor实现一级缓存逻辑
- sql执行逻辑执行update、query方法,先走一级缓存,之后由装饰的Executor实现。
二级缓存执行器——CacheExecutor
- 二级缓存会进行跨线程的调用,所以需要提交之后缓存中才有数据——执行sql后进行commit
- 先走二级缓存,再走一级缓存