mybatis原始碼解析( 結構)
阿新 • • 發佈:2021-01-12
mybatis中主要類和介面
- Configuration:將mybatis配置檔案中的資訊儲存到該類中
- SqlSessionFactory:解析Configuration類中的配置資訊,獲取SqlSession
- SqlSession:負責和資料庫互動,完成增刪改查
- Executor:mybatis的排程核心,負責SQL的生成
- StatementHandler:封裝了JDBC的statement操作
- ParameterHandler:負責完成JavaType到jdbcType的轉換
- ResultSetHandler:負責完成結果集到Java Bean的轉換
- MappedStatement:代表一個select|update|insert|delete元素
- SqlSource:根據傳入的ParamterObject生成SQL
- BoundSql:包含SQL和引數資訊
在網上找了個流程圖幫助理解
1、在和spring和事務整合後,第五步的獲取sqlSession會複雜點,上一節已經說過
2、第六步中,userMapper是個單例了,一級快取會失效,和事務整合後,又會生效
3、第七步之前回去transactionalCacheMannager時,這裡集成了redis的快取,只要實現Cache介面,二級快取這裡看過原始碼可以發現,cache是一層一層巢狀的,比如LruCache,SerializedCache
4、第八步中routingStatementHandler也就是上面的StatementHandler,但只是相當於一個工廠類,生產PreparedStatementHandler、SimpleStatementHandler、CallableStatementHandler
5、PreparedStatementHandler裡包括ParameterHandler處理引數java轉換為jdbc,ResultHandler處理jdbc轉換成java
6、第九步獲取到了PreparedStatementHandler,在這裡獲取jdbc的connection
7、TypeHandle的運用,轉換java型別和jdbc型別