JdbcTemplate 和 mybatis 的對比

好處:

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

  2. 簡單效率快程序員

缺點:

  1.  使用時建立鏈接,不使用時當即釋放。頻繁的鏈接開啓和關閉形成資源的浪費,影響數據庫的性能。spring

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

  2.  將sql硬編碼到java代碼中,若是sql修改,須要從新編譯java代碼,不利於系統的維護。數據庫

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

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

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

 


 

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

經過 mybatis提供的映射方式,半自動的生成sql,大部分仍是須要程序員編寫sql。app

核心:

  輸入映射:能夠將statement中的輸入參數自動輸入到映射 經過ongl表達式,

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

mybatis的結構

那麼說一下myabtis的大體工做流程

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

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

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

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

三、  由會話工廠建立sqlSession即會話,操做數據庫須要經過sqlSession進行。

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

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

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

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

 


mybatis優勢:

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

  二、 支持註解 面對接口開發,效率高,分分鐘解決一個sql。

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

  四、 mybatis的高度封裝,是的程序員可專一與業務層,開發效率高。因此選擇mybatis的開發公司多。

相關文章
相關標籤/搜索