Java 持久層框架之 MyBatis
阿新 • • 發佈:2020-12-23
### MyBatis 簡介
`MyBatis` 是一個基於 `Java` 的持久層框架,它內部封裝了 `JDBC`,使開發者只需關注 `SQL` 語句本身,而不用再花費精力去處理諸如註冊驅動、建立 `Connection`、配置 `Statement` 等繁雜過程。
`Mybatis` 通過 `xml` 或註解的方式將要執行的各種 `Statement`、`PreparedStatement` 等配置起來,並通過 `Java` 物件和 `Statement` 中 `SQL` 的動態引數進行對映生成最終執行的 `SQL` 語句,最後由 `MyBatis` 框架執行 `SQL` 並將結果對映成 `Java` 物件並返回。
### MyBatis 與 Hibernate
Hibernate 框架是提供了全面的資料庫封裝機制的 **全自動 ORM**,即實現了 POJO 和資料庫表之間的對映,以及 SQL 的自動生成和執行。
相對於此,MyBatis 只能算作是 **半自動 ORM**。其著力點,是在 POJO 類與 SQL 語句之間的對映關係。也就是說,MyBatis 並不會為程式設計師自動生成 SQL 語句。具體的 SQL 需要程式設計師自己編寫,然後通過 SQL 語句對映檔案,將 SQL 所需的引數,以及返回的結果欄位對映到指定 POJO。
### MyBatis 特點
- 在 `XML` 檔案中配置 `SQL` 語句,實現了 `SQL` 語句與程式碼的分離,給程式的維護帶來了很大便利。
- 可以結合資料庫自身的特點靈活控制 `SQL` 語句,因此能夠實現比 `Hibernate` 等全自動 `ORM` 框架更高的查詢效率,能夠完成複雜查詢。
![file](https://img2020.cnblogs.com/other/2001438/202012/2001438-20201222223438098-738804580.png)
### Spring 整合 Mybatis
#### 引入依賴
在 `pom.xml` 引入 Mybatis 相關依賴。
```xml
```
#### 建立 Mybatis 配置檔案
在 `resource` 目錄下建立 `mybatis-config` 配置檔案。
```xml
```
#### 建立整合配置檔案
在 `resource` 目錄下建立一個 `spring-context-mybatis.xml` 的整合配置檔案。
```xml
```
### CRUD 案例
#### 新增
```xml
```
#### 刪除
```xml
```
#### 查詢
```xml
```
#### 更新
```xml
```
### MyBatis 動態 SQL
動態 SQL 主要用於解決查詢條件不確定的情況:在程式執行期間,根據使用者提交的查詢條件進行查詢。**提交的查詢條件不同,執行的 SQL 語句不同。**若將每種可能的情況均逐一列出,對所有條件進行排列組合,將會出現大量的 SQL 語句。此時,可使用動態 SQL 來解決這樣的問題。這裡的條件判斷使用的表示式為 `OGNL` 表示式。常用的動態 SQL 標