Spring Boot學習筆記(十)

Spring Boot 集成 MyBatis —— 概念篇

  • ORM框架
    • 對象關係映射:Object Relational Mapping
    • 出現原因:解決面向對象與關係型數據庫的不匹配而產生的技術
    • 具體實現:ORM 通過使用描述對象和數據庫之間映射的元數據,將程序中的對象自動持久化到關係數據庫中。
  • Mybatis
    • Mybatis就是一款標準的ORM框架,支持普通 SQL 查詢,存儲過程和高級映射的優秀持久層框架。
    • MyBatis 消除了幾乎所有的JDBC 代碼和參數的手工設置以及對結果集的檢索封裝。
    • MyBatis 可以使用簡單的 XML 或註解用於配置和原始映射,將接口和 Java 的實體類映射成數據庫中的記錄。
  • Mybatis優缺點
    Pros Cons
    1、SQL 被統一提取出來,便於統一管理和優化 1、編寫 SQL 語句時工作量很大
    2、SQL 和代碼解耦,將業務邏輯和數據訪問邏輯分離,項目結構更清晰 2、SQL 語句依賴於數據庫,導致數據庫移植性差
    3、提供映射標籤,支持對象與數據庫的 ORM 字段關係映射
    4、靈活書寫動態 SQL,支持各種條件來動態生成不同的 SQL
  • Mapper 實現方式
    • 基於 XML 的 Mapper 配置文件
    • 基於 Java 註解的MyBatis 註解
    • 直接使用 MyBatis 提供的 API
  • Mapper 接口
    • Mapper 接口是指自行定義的一個數據操作接口,類似於通常所說的 DAO
    • MyBatis 會自動爲 Mapper 接口創建動態代理對象
    • Mapper 接口的方法通常與 Mapper 配置文件中的 select、insert、update、delete 等 XML 結點存在對應關係
  • Mybatis 的核心接口 —— Executor
    • MyBatis 中所有的 Mapper 語句的執行都是通過 Executor 進行的
  • MyBatis 的關鍵對象 —— SqlSession
    • SqlSession 類似於 JDBC 的Connection
    • SqlSession 對象完全包含以數據庫爲背景的所有執行 SQL 操作的方法
    • 它的底層封裝了JDBC 連接,可以用 SqlSession 實例來直接執行被映射的 SQL 語句
  • MyBatis 的關鍵對象 —— SqlSessionFactory
    • SqlSessionFactory是單個數據庫映射關係經過編譯後的內存鏡像
    • SqlSessionFactory 對象的實例可以通過 SqlSessionFactoryBuilder 對象類獲得
    • SqlSessionFactoryBuilder 可以從 XML 配置文件或預先定製的 Configuration 的實例構建出
  • Mybatis 工作流程
    • 在這裏插入圖片描述
    • 加載 Mapper 配置的 SQL 映射文件,或者是註解的相關 SQL 內容
    • 創建會話工廠:MyBatis 通過讀取配置文件的信息來構造出會話工廠(SqlSessionFactory)
    • 創建會話:根據會話工廠,MyBatis 就可以通過它來創建會話對象(SqlSession)。會話對象是一個接口,該接口中包含了對數據庫操作的增刪改查方法
    • 創建執行器:因爲會話對象本身不能直接操作數據庫,所以它使用了一個叫做數據庫執行器
      (Executor)的接口來幫它執行操作
    • 封裝 SQL 對象:在這一步,執行器將待處理的 SQL 信息封裝到MappedStatement對象中,MappedStatement對象包括 SQL 語句、輸⼊入參數映射信息(Java 簡單類型、HashMap 或 POJO)和輸出結果映射信息(Java 簡單類型、HashMap 或 POJO)
    • 操作數據庫:擁有了執行器和 SQL 信息封裝對象就使用它們訪問數據庫了,最後再返回操作結果,結束流程。
  • MyBatis-Spring-Boot-Starter
    • MyBatis-Spring-Boot-Starter是MyBatis 快速集成 Spring Boot 提供的一個組件包
    • 優點
      • 構建獨立的應用
      • 幾乎可以零配置
      • 需要很少的 XML 配置
    • 集成方案
      • 簡化後的 XML 配置版
      • 使用註解
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章