目录
前言
sqlSessionFactory的创建
在mybatis-configuration中的示例代码中,通过SqlSessionFactoryBuilder的build方法,使用XMLConfigBuilder解析配置文件,创建configuration,然后创建在创建DefaultSqlSessionFactory时将Configuration传了进去
获取sqlSession
1 | private SqlSession openSessionFromDataSource(ExecutorType execType, TransactionIsolationLevel level, boolean autoCommit) { |
mapper代理的创建
sqlSession中的getMapper,是通过configuration中的registerMapper
容器获取
1 | public <T> T getMapper(Class<T> type, SqlSession sqlSession) { |
1 | public class MapperProxyFactory<T> { |
list查询
1 | private <E> Object executeForMany(SqlSession sqlSession, Object[] args) { |
sqlSession
sqlSession的实现类,选择DefaultSqlSession查看源码(源码不多,300多行,具体执行主要靠Executor).
属性
1 | private final Configuration configuration; |
executor查询
1 |
|
进入BaseExecutor#query
方法.debug的时候注意默认会走CacheExecutor,需要配置关闭缓存,关闭之后创建的Executor为SimpleExecutor
.
1 |
|
result映射
PreparedStatementHandler#query
1 |
|
DeafultResultHandler#handleResultSets
1 |
|
可以自己传ResultHandler,但是返回结果需要改为void.