Mybatis簡介以及工作原理


Mybatis的工作原理

1、加載mybatis全局配置文件(數據源、mapper映射文件等),解析配置文件,MyBatis基於XML配置文件生成Configuration,和一個個MappedStatement(包括了參數映射配置、動態SQL語句、結果映射配置),其對應着<select | update | delete | insert>標簽項。

2、SqlSessionFactoryBuilder通過Configuration對象生成SqlSessionFactory,用來開啟SqlSession。

3、SqlSession對象完成和數據庫的交互:
a、用戶程序調用mybatis接口層api(即Mapper接口中的方法)
b、SqlSession通過調用api的Statement ID找到對應的MappedStatement對象
c、通過Executor(負責動態SQL的生成和查詢緩存的維護)將MappedStatement對象進行解析,sql參數轉化、動態sql拼接,生成jdbc Statement對象,使用Paramterhandler填充參數,使用statementHandler綁定參數。
d、JDBC執行sql。

e、借助MappedStatement中的結果映射關系,使用ResultSetHandler將返回結果轉化成HashMap、JavaBean等存儲結構並返回。

f、關閉sqlsession會話。

MyBatis的主要成員

  • Configuration        MyBatis所有的配置信息都保存在Configuration對象之中,配置文件中的大部分配置都會存儲到該類中
  • SqlSession            作為MyBatis工作的主要頂層API,表示和數據庫交互時的會話,完成必要數據庫增刪改查功能
  • Executor               MyBatis執行器,是MyBatis 調度的核心,負責SQL語句的生成和查詢緩存的維護
  • StatementHandler 封裝了JDBC Statement操作,負責對JDBC statement 的操作,如設置參數等
  • ParameterHandler  負責對用戶傳遞的參數轉換成JDBC Statement 所對應的數據類型
  • ResultSetHandler   負責將JDBC返回的ResultSet結果集對象轉換成List類型的集合
  • TypeHandler          負責java數據類型和jdbc數據類型(也可以說是數據表列類型)之間的映射和轉換
  • MappedStatement  MappedStatement維護一條<select|update|delete|insert>節點的封裝
  • SqlSource              負責根據用戶傳遞的parameterObject,動態地生成SQL語句,將信息封裝到BoundSql對象中,並返回
  • BoundSql              表示動態生成的SQL語句以及相應的參數信息

以上主要成員在一次數據庫操作中基本都會涉及,在SQL操作中重點需要關注的是SQL參數什么時候被設置和結果集怎么轉換為JavaBean對象的,這兩個過程正好對應StatementHandler和ResultSetHandler類中的處理邏輯。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM