1.不是不需要實現類,而是這些mapper介面不要人為的去實現(即不需要程式設計師使用者去實現)。
2.它們的實現者是 MyBatis 的框架開發者,透過動態代理實現的
MyBatis 會在執行時動態建立mapper介面的實現類,這個過程是透過 Java 的反射機制和 CGLIB 庫來完成的。
呼叫 Mapper 介面中的方法時,MyBatis 會根據介面方法的名稱和配置檔案中定義的 SQL 對映關係,動態地建立一個代理物件。這個代理物件在執行方法時,會負責執行對應的 SQL 語句,並將結果對映回 Java 物件
使用流程:
1.配置:定義 Mapper 介面+對應的 XML 檔案/註解來指定 SQL 語句和對映關係。
MyBatis 配置檔案(mybatis-config.xml)中會指定 Mapper XML 檔案的位置或者註冊 Mapper 介面。
2.啟動
SQL 語句和對映關係載入至記憶體
3.建立 SqlSessionFactory
4.獲取 SqlSession
5.動態代理
程式呼叫 Mapper 介面的方法時,MyBatis 使用 Java 的動態代理機制來建立一個代理物件。這個代理物件會攔截介面方法的呼叫。
6.執行 SQL 語句
代理物件攔截到介面方法後,根據方法名稱找到SQL 語句和對映關係。
透過SqlSession執行SQL
7.結果對映
將執行結果對映為JAVA物件
8.返回結果
9.關閉SqlSession