1. 程式人生 > 實用技巧 >mybatis原始碼解析( 結構)

mybatis原始碼解析( 結構)

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型別