【MyBatis】MyBatis工做流程

1. MyBatis工做流程

1.1 簡略流程

MyBatis執行流程

  1. 建立SqlSessionFactoryBuilder對象,調用build(inputstream)方法讀取並解析配置文件mybatis-config.xml,返回SqlSessionFactory對象。
  2. SqlSessionFactory建立SqlSession 對象,沒有手動設置的話事務默認開啓。
  3. SqlSession實例得到Mapper對象並運行Mapper映射的SQL語句,完成對數據庫的CRUD和事務提交
說明:SqlSession是單線程對象,由於它是非線程安全的,是持久化操做的獨享對象,相似jdbc中的Connection,底層就封裝了jdbc鏈接。

1.2 詳細流程

詳細流程以下:sql

  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對象
  • d)JDBC執行sql。
  • e)藉助MappedStatement中的結果映射關係,將返回結果轉化成HashMap、JavaBean等存儲結構並返回。
相關文章
相關標籤/搜索