Mybatis基礎知識

Hanyta發表於2024-05-10
  1. 什麼是mybatis?

    mybatis是一款用於持久層的、輕量級的半自動化ORM框架,封裝了所有jdbc操作以及設定查詢引數和獲取結果集的操作,支援自定義sql、儲存過程和高階對映。

    • 框架用於持久層,就是說這個框架是和資料庫進行互動的,用於資料庫中資料操作的框架
    • 輕量級框架的概念可以簡單的理解為所用框架開發的程式啟動時佔用的資源少、對業務程式碼的侵入性不強、比較容易配置、使用和部署簡單、獨立部署即可使用無需依賴另外的框架。
    • ORM,Object Relational Mapping, 物件關係對映,將java中的型別一一對映到資料庫的欄位型別上,因此可以將其看作是一個ORM框架,半自動是因為使用mybatis,需要手動配置pojo、sql和對映關係,使用者可以自定義sql,這些sql是針對於處理資料庫的,但是這些sql需要接受一些查詢java型別的引數,或者是返回結果集封裝到java類中,這些是需要配置的,因此mybatis是一個半自動ORM框架。
  2. 為什麼要用mybatis?

    傳統 JDBC 開發存在的問題:

    • 頻繁建立資料庫連線物件、釋放,容易造成系統資源浪費,影響系統效能。可以使用連線池解決這個問題。但是使用 jdbc 需要自己實現連線池。
    • sql 語句定義、引數設定、結果集處理存在硬編碼。實際專案中 sql 語句變化的可能性較大,一旦發生變化,需要修改 java 程式碼,系統需要重新編譯,重新發布。不好維護。
    • 使用 preparedStatement 向佔有位符號傳引數存在硬編碼,因為 sql 語句的 where 條件不一定,可能多也可能少,修改 sql 還要修改程式碼,系統不易維護。
    • 結果集處理存在重複程式碼,處理麻煩。如果可以對映成 Java 物件會比較方便。

    MyBatis解決JDBC的問題

    • 在 mybatis-config.xml 中配置資料連結池,使用連線池管理資料庫連線。
    • 將 Sql 語句配置在 XXXXmapper.xml 檔案中與 java 程式碼分離。
    • Mybatis 自動將 java 物件對映至 sql 語句。
    • Mybatis 自動將 sql 執行結果對映至 java 物件。
  3. Mybatis優缺點

    優點:

    • 基於 SQL 語句程式設計,相當靈活,不會對應用程式或者資料庫的現有設計造成任何影響。
    • SQL寫在 XML 裡,解除 sql 與程式程式碼的耦合,便於統一管理。
    • 提供 XML 標籤,支援編寫動態 SQL 語句,並可重用與 JDBC 相比,減少了 50%以上的程式碼量,消除了 JDBC 大量冗餘的程式碼,不需要手動開關連線很好的與各種資料庫相容
    • 提供對映標籤,支援物件與資料庫的 ORM 欄位關係對映。
    • 提供物件關係對映標籤,支援物件關係元件維護能夠與 Spring 很好的整合

    缺點:

    • SQL 語句的編寫工作量較大,尤其當欄位多、關聯表多時,對開發人員編寫 SQL 語句的功底有一定要求。
    • SQL 語句依賴於資料庫,導致資料庫移植性差,不能隨意更換資料庫。