Mybatis 框架(介紹及原理)

mybatis的介紹、解決的問題、工作原理

MyBatis 是支持普通 SQL查詢,存儲過程和高級映射的優秀持久層框架。

MyBatis 消除了幾乎所有的JDBC代碼和參數的手工設置以及結果集的檢索。

MyBatis 使用簡單的 XML或註解用於配置和原始映射,將接口和 Java POJOsPlain Ordinary Java Objects,普通的 Java對象)映射成數據庫中的記錄。

每個MyBatis應用程序主要都是使用SqlSessionFactory實例的,一個qlSessionFactory實例可以通過SqlSessionFactoryBuilder獲得。SqlSessionFactoryBuilder可以從一個xml配置文件或者一個預定義的配置類的實例獲得。用xml文件構建SqlSessionFactory實例是非常簡單的事情。推薦在這個配置中使用類路徑資源(classpath resource),但你可以使用任何Reader實例,包括用文件路徑或file://開頭的url創建的實例。

MyBatis有一個實用類----Resources,它有很多方法,可以方便地從類路徑及其它位置加載資源。

採用 ORM 思想解決了實體和數據庫映射的問題,對 jdbc 進行了封裝,屏蔽了 jdbc api 底層訪問細節,使我們不用與 jdbc api 打交道,就可以完成對數據庫的持久化操作。

 

jdbc技術存在的問題

1、數據庫鏈接創建、釋放頻繁造成系統資源浪費從而影響系統性能,如果使用數據庫鏈接池可解決此問題。

2、Sql 語句在代碼中硬編碼,造成代碼不易維護,實際應用 sql 變化的可能較大,sql 變動需要改變 java代碼。

3、使用 preparedStatement 向佔有位符號傳參數存在硬編碼,因爲 sql 語句的 where 條件不一定,可能多也可能少,修改 sql 還要修改代碼,系統不易維護。

4、對結果集解析存在硬編碼(查詢列名),sql 變化導致解析代碼變化,系統不易維護,如果能將數據庫記錄封裝成 pojo 對象解析比較方便。

 

 

mybatis工作流程如下:

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

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

3、SqlSession 對象完成和數據庫的交互: 

(1) 用戶程序調用 mybatis 接口層api(即 Mapper 接口中的方法) 

(2) SqlSession 通過調用 api 的 Statement ID 找到對應的 MappedStatemen 對象

(3) 通過 Executor(負責動態SQL的生成和查詢緩存的維護)將MappedStatement對象進行解析,sql參數轉化、動態sql拼接,生成jdbc Statement對象

(4) JDBC執行sql。

藉助 MappedStatement 中的結果映射關係,將返回結果轉化成 HashMap、JavaBean 等存儲結構並返回。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章