jdk源碼剖析手冊,Mybatis3 源碼解析系列

 2023-10-12 阅读 32 评论 0

摘要:簡介 Mybatis作為一個優秀的Java持久化框架,在我們的日常工作中相信都會用到,本次源碼解析系列,就開始探索下Mybatis 總結 在MyBatis的學習中,首先通讀了《MyBatis3源碼深度解析》一遍,然后抱著如何去寫一個基本功能的MyBatis框架的想法&#

簡介

Mybatis作為一個優秀的Java持久化框架,在我們的日常工作中相信都會用到,本次源碼解析系列,就開始探索下Mybatis

總結

在MyBatis的學習中,首先通讀了《MyBatis3源碼深度解析》一遍,然后抱著如何去寫一個基本功能的MyBatis框架的想法,又讀了2-3遍

心中有了大致的想法,然后再去通過MyBatis的示例去走一遍源碼,注重關注了一些在寫Demo中可能會遇到的細節點

jdk源碼剖析手冊?后面花了兩三天的時間,把基本功能的框架Dome給寫了出來,各個感覺還是可以的,達到了自己預期的目標

下面再總結下MyBatis的學習:

下面一個圖,來源于:《MyBatis3源碼深度解析》基本涵蓋了MyBatis的核心:

image.png

云解析源碼、最右側的是全局配置 Configuration:這里負責前期Mapper的解析和TypeHandler注冊相關的,在初始化階段,把在后期SQL查詢前的參數解析和結果轉換時需要用到的東西先存下來,便于后面獲取用于處理

左側是MyBatis的核心類:

  • SQLSession:可以算是整個Mybatis的入口,數據庫源與和Mapper的代理對象從這里進行獲取
  • Executor:語句執行入口
  • StatementHandler:可以算是JDBC中對于Statement的封裝,主要是語句生成相關方面的處理
  • ParameterHandler:SQL查詢時參數轉換處理,如果有參數則調用TypeHandler相關邏輯
  • ResultSetHandler:負責SQL結果的處理,如果有返回結果需要處理,則調用TypeHandler相關邏輯
  • TypeHandler:負責JavaType與jdbcType的相關轉換

感覺核心邏輯主線就是這些了,自己在Demo中除了ParameterHandler沒有進行實現,其他基本都有體現

當然,讀代碼時候發現,細節還是挺多的,還有很多的地方沒有仔細去研究,目前就簡單看了下,有個印象,方便如果以后遇到問題,也能去定位后,結合問題場景仔細研究

react源碼解析、在研究的過程中發現這些數據庫的相關的框架,基本都是基于JDBC規范的Statement等去做文章的,比如MyBatis可以結合HikariCP,再結合Shardingsphere,感覺挺有意思,自己之前寫過一篇基于這三者做多數據源的文章:ShardingSphere JDBC 分庫實現多數據庫源。寫完還有點懵,現在就知道哪些Bean定義的相關原理和作用,做到了心中有數

本系列有源碼解析部分和Demo實現部分,涉及到的范圍就是上面的核心邏輯主線部分,還有如動態SQL(這個在日常開發中經常使用)之類沒有去探索,但大致原理看書了解一些,留待以后有空再研究

解析文章目錄

  • MyBatis3源碼解析(1)探索準備
  • MyBatis3源碼解析(2)數據庫連接
  • MyBatis3源碼解析(3)查詢語句執行
  • MyBatis3源碼解析(4)參數解析
  • MyBatis3源碼解析(5)查詢結果處理
  • MyBatis3源碼解析(6)TypeHandler使用
  • MyBatis3源碼解析(7)TypeHandler注冊與獲取
  • MyBatis3源碼解析(8)MyBatis與Spring的結合

Demo 編寫

完整的工程已放到GitHub上:https://github.com/lw1243925457/MybatisDemo/tree/master/

  • MyBatis Demo 編寫(1)基礎功能搭建
  • MyBatis Demo 編寫(2)結果映射轉換處理

參考鏈接

  • 《MyBatis3源碼深度解析》:這本書確實不錯,通讀一兩遍后,自己探索Debug,有很多的幫助

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/3/135527.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息