【mybatis學習之入門(一)】

我是太陽啦啦啦發表於2017-06-18

前言:

      從開始的JDBC經歷dbuttls,mybatis,Hebernate,JDBC是最熟悉不過的了,JDBC提供了一種基準,據此可以構建更高階的工具和介面,使資料庫開發人員能夠編寫資料庫應用程式。Dbutils:主要是封裝了JDBC的程式碼,簡化dao層的操作。幫助java程式設計師,開發Dao層程式碼的簡單框架,幫助程式設計師,提高程式的開發效率。hibernate:是一個標準化的ORM框架。不需要程式寫sql,語句就自動生成。對sql進行優化、修改比較困難。那麼mybatis是什麼呢?今天我們一起來簡單瞭解一下mybatis! 

核心

背景:

它的前身就是iBatis,iBatis也是一個資料對映框架,它使我們的Java/.Net應用程式能夠更加簡潔的跟資料庫打交道。iBatis通過一系列的XML配置檔案,解耦了物件和儲存過程/SQL語句。

簡介:

mybatis是支援普通SQL查詢,儲存過程和高階對映的優秀持久層框架。mybatis消除了幾乎所有的jdbc程式碼和引數的手工配置以及對結果集的檢索封裝。mybatis可以使用簡單的XML或註解用於配置和原始對映,將介面和java的POJO對映成資料庫中的記錄。

思想:

從配置檔案(通常是XML配置檔案中)得到 sessionfactory。
由sessionfactory 產生 session。
在session 中完成對資料的增刪改查和事務提交等。
在用完之後關閉session。
在java 物件和 資料庫之間有做mapping的配置檔案,也通常是xml檔案。

功能架構


Mybatis的功能架構分為三層:

API介面層:
提供給外部使用的介面API,開發人員通過這些本地API來操縱資料庫。介面層一接收到呼叫請求就會呼叫資料處理層來完成具體的資料處理。
資料處理層:
負責具體的SQL查詢、SQL解析、SQL執行和執行結果對映處理等。它主要的目的是根據呼叫的請求完成一次資料庫操作。
基礎支撐層:
負責最基礎的功能支撐,包括連線管理、事務管理、配置載入和快取處理,這些都是共用的東西,將他們抽取出來作為最基礎的元件。為上層的資料處理層提供最基礎的支撐。

優點:

1."半自動化"的ORM實現,所有的功能需要通過編寫SQL來實現
2.基於XML的SQL配置
3.提供了對底層JDBC資料訪問的封裝
4.提供強大的資料對映功能(傳入引數對映和結果資料對映)

缺點:

1. sql工作量很大,依賴於資料庫,導致資料庫移植性差。
2. 欄位對映標籤和物件關係對映標籤僅僅是對對映關係的描述,具體實現仍然依賴於sql。
3. DAO層過於簡單,物件組裝的工作量較大。
4. 編寫動態sql時,不方便除錯,尤其邏輯複雜時。
5.提供的寫動態sql的xml標籤功能簡單(連struts都比不上),編寫動態sql仍然受限,且可讀性低。
6. 若不查詢主鍵欄位,容易造成查詢出的物件有“覆蓋”現象。
7. 引數的資料型別支援不完善。
8. 快取使用不當,容易產生髒資料。

應用場合:

除了hibernate 的場景,主要應用需求專案較多的場景,如:網際網路專案; 敏捷開發等等。

總結:

本篇博文只是對mybatis的簡單介紹,下篇博文將繼續走進mybatis!

相關文章