MyBatis理解與掌握(簡介)

MyBatis理解與掌握(簡介)

@(MyBatis)[Java, 框架, MyBatis]程序員

簡介

  Mybatis是一個數據持久層框架,MyBatis消除了幾乎全部的JDBC代碼和參數的手工設置以及結果集的檢索。MyBatis使用簡單的XML或者註解用於配置和原始映射,將接口和Java的POJO(Plain Old Java Objects,普通的 Java對象)映射成數據庫中的記錄經過一系列的XML配置文件,解耦了對象和存儲過程/SQL語句。
由於MyBatis面向的是SQL,因此有時也稱之爲SQL映射器sql

clipboard.png

與JDBC比較

(1)數據庫鏈接建立、釋放頻繁形成系統資源浪費 從而影響系統性能,若是使用數據庫鏈接池可解決此問題。
解決:在mybatis-config.xml中配置了數據鏈接池,方便使用了鏈接池管理數據庫連接。數據庫

(2)Sql語句在代碼中硬編碼 ,形成代碼不易於維護,實際應用sql變化的可能較大,sql變更須要改變Java代碼。
解決:將Sql語句配置在映射文件(xxxmapper.xml)中,實現sql語句和Java代碼的分離。mybatis

(3)使用preparedStatement向佔有位符號傳參數存在硬編碼 ,由於sql語句的where條件不必定,可能多也可能少,修改sql還須要修改代碼,系統不易於維護。
解決:Mybatis自動將Java對象映射至sql語句,經過statement中的parameterType定義輸入參數類型。架構

(4)對結果集解析存在硬編碼 (查詢列名),sql變化致使解析代碼變化,系統不易於維護,若是能將數據庫記錄封裝成pojo對象解析比較方便。
解決:Mybatis自動將sql執行結果映射至Java對象,經過statement中的resultType定義輸出結果的類型。app

與Hibernate比較

Mybatis學習門檻低, 簡單易學 ,程序員直接編寫原生態sql,可嚴格控制sql執行性能, 靈活度高 ,很是適合對關係數據模型要求不高的軟件開發,例如互聯網軟件、企業運營類軟件等,由於這類軟件需求變化頻繁,一旦需求變化要求成果輸出迅速。
可是Mybatis 沒法作到數據庫無關性 ,若是須要實現支持多種數據庫的軟件則須要自定義多套sql映射文件,工做量大。框架

Hibernate 對象/關係映射能力強數據庫無關性好 ,對於關係模型要求高的軟件(例如需求固定的定製化軟件)若是用Hibernate開發能夠節省不少代碼,提升效率。可是Hibernate 學習門檻高,要精通門檻更高,並且怎麼設計O/R映射,在性能和對象模型之間如何權衡,以及怎麼用好Hibernate須要具備很強的經驗和能力才行。性能

總之,按照用戶的需求在有限的資源環境下只能作出威化擴展性良好的軟件架構都是好架構,因此框架只有適合纔是最好的。學習

配置文件區別:

  • hibernate:編碼

    • 主配置文件:數據庫鏈接信息,方言,映射文件信息
    • 實體類配置文件:類和表之間的映射關係
  • Mybatis:

    • 主配置文件:數據庫鏈接信息,映射文件信息
    • SQL映射文件:將執行的SQL進行關聯映射

Mybatis和Hibernate不一樣,它不徹底是一個ORM框架,由於Mybatis須要程序員本身編寫sql語句,不過Mybatis能夠經過xml或註解方式靈活配置要運行的sql語句,並將Java對象和sql語句映射生成最終執行的sql,最後將sql執行的結果再映射生成Java對象

相關文章
相關標籤/搜索