JdbcTemplate 和 mybatis 的對比


好處:

  1. jdbcTemplate 是spring對 jdbc操作數據庫進行的封裝,使得開發者可以直接在java文件中 編寫sql,無需配置xml文件。

  2. 簡單效率快

缺點:

  1.  使用時創建連接,不使用時立即釋放。頻繁的連接開啟和關閉造成資源的浪費,影響數據庫的性能。

      解決辦法:使用數據庫連接池,管理數據庫的連接。

  2.  將sql硬編碼到java代碼中,如果sql修改,需要重新編譯java代碼,不利於系統的維護。

      解決辦法:把sql語句定義在 xml配置文件,靜態資源

  3.  在statement中的 對位符和參數設置,硬編碼到java代碼  ,

      result結果集遍歷時,需要硬編碼獲取表數據的映射,不利於維護。

 


 

所以 mybatis架構解決了部分問題。對於團隊開發,快速開發更好的支持。

通過 mybatis提供的映射方式,半自動的生成sql,大部分還是需要程序員編寫sql。

核心:

  輸入映射:可以將statement中的輸入參數自動輸入到映射 通過ongl表達式,

  輸出映射:將查詢的結果集靈活映射成為java對象

mybatis的結構

那么說一下myabtis的大致工作流程

1、  mybatis配置(兩個xml文件)

    SqlMapConfig.xml,此文件作為mybatis的全局配置文件,配置了mybatis的運行環境等信息(數據源,事物,mapper映射文件)。

    mapper.xml文件即sql映射文件,文件中配置了操作數據庫的sql語句。此文件需要在SqlMapConfig.xml中加載。

2、  通過mybatis環境等配置信息構造SqlSessionFactory即會話工廠

3、  由會話工廠創建sqlSession即會話,操作數據庫需要通過sqlSession進行。

4、  mybatis底層自定義了Executor執行器接口操作數據庫,Executor接口有兩個實現,一個是基本執行器、一個是緩存執行器。

5、  Mapped Statement也是mybatis一個底層封裝對象,它包裝了mybatis配置信息及sql映射信息等。mapper.xml文件中一個sql對應一個Mapped Statement對象,sql的id即是Mapped statement的id。

6、  Mapped Statement對sql執行輸入參數進行定義,包括HashMap、基本類型、pojo,Executor通過 Mapped Statement在執行sql前將輸入的java對象映射至sql中,輸入參數映射就是jdbc編程中對preparedStatement設置參數。

7、  Mapped Statement對sql執行輸出結果進行定義,包括HashMap、基本類型、pojo,Executor通過 Mapped Statement在執行sql后將輸出結果映射至java對象中,輸出結果映射過程相當於jdbc編程中對結果的解析處理過程。

 


mybatis優點:

  1、 mybatis對jdbc的抽象封裝高 。spring jdbc要想實現的細節很多,例如mybatis封裝了更多的對象映射。

  2、 支持注解 面對接口開發,效率高,分分鍾解決一個sql。

  3、 對於復雜的SQL,springJDBC編寫麻煩,mybatis人性化點。

  4、 mybatis的高度封裝,是的程序員可專注與業務層,開發效率高。所以選擇mybatis的開發公司多。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM