前几次提到过DataSource是怎么生成的,这次看下是怎么获取Connection,mybatis的是怎么实现的连接池的。
前面也说过在生成DefaultSqlSession的时候,会生成一个CachingExecutor,在CachingExecutor中会有个代理的Executor,如果不指定的话默认是SimpleExecutor,如图1:
图1
![](https://img2018.cnblogs.com/blog/1540205/201902/1540205-20190215152538273-229986308.png)
在看下CachingExecutor的构造函数,如图2:
图2
![](https://img2018.cnblogs.com/blog/1540205/201902/1540205-20190215152603029-2026833594.png)
现在在CachingExecutor中的代理就是SimpleExecutor。
SimpleExecutor有个私有方法prepareStatement,如图3:
图3
![](https://img2018.cnblogs.com/blog/1540205/201902/1540205-20190215152627766-2038313128.png)
这里就是获取数据库