趕緊收藏吧!MyBatis-Plus萬字長文圖解筆記,錯過了這個村可就沒這個店了
阿新 • • 發佈:2020-12-06
## 簡介
> MyBatis-Plus(簡稱 MP)是一個 MyBatis的增強工具,在 MyBatis 的基礎上只做增強不做改變,為簡化開發、提高效率而生
> **願景**
>
> 我們的願景是成為 MyBatis 最好的搭檔,就像 魂鬥羅 中的 1P、2P,基友搭配,效率翻倍。
![](https://upload-images.jianshu.io/upload_images/23140115-03087e6c9888ac8a.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
## 特性
* **無侵入**:只做增強不做改變,引入它不會對現有工程產生影響,如絲般順滑
* **損耗小**:啟動即會自動注入基本 CURD,效能基本無損耗,直接面向物件操作
* **強大的 CRUD 操作**:內建通用 Mapper、通用 Service,僅僅通過少量配置即可實現單表大部分 CRUD 操作,更有強大的條件構造器,滿足各類使用需求
* **支援 Lambda 形式呼叫**:通過 Lambda 表示式,方便的編寫各類查詢條件,無需再擔心欄位寫錯
* **支援主鍵自動生成**:支援多達 4 種主鍵策略(內含分散式唯一 ID 生成器 - Sequence),可自由配置,完美解決主鍵問題
* **支援 ActiveRecord 模式**:支援 ActiveRecord 形式呼叫,實體類只需繼承 Model 類即可進行強大的 CRUD 操作
* **支援自定義全域性通用操作**:支援全域性通用方法注入( Write once, use anywhere )
* **內建程式碼生成器**:採用程式碼或者 Maven 外掛可快速生成 Mapper 、 Model 、 Service 、 Controller 層程式碼,支援模板引擎,更有超多自定義配置等您來使用
* **內建分頁外掛**:基於 MyBatis 物理分頁,開發者無需關心具體操作,配置好外掛之後,寫分頁等同於普通 List 查詢
* **分頁外掛支援多種資料庫**:支援 MySQL、MariaDB、Oracle、DB2、H2、HSQL、SQLite、Postgre、SQLServer 等多種資料庫
* **內建效能分析外掛**:可輸出 Sql 語句以及其執行時間,建議開發測試時啟用該功能,能快速揪出慢查詢
* **內建全域性攔截外掛**:提供全表 delete 、 update 操作智慧分析阻斷,也可自定義攔截規則,預防誤操作
## 框架結構
![](https://upload-images.jianshu.io/upload_images/23140115-9ed252d6a0199f81.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
## 快速入門
* 建立資料庫表(mybatis——plus)
* 建立user表**
```
DROP TABLE IF EXISTS user;
CREATE TABLE user
(
id BIGINT(20) NOT NULL COMMENT '主鍵ID',
name VARCHAR(30) NULL DEFAULT NULL COMMENT '姓名',
age INT(11) NULL DEFAULT NULL COMMENT '年齡',
email VARCHAR(50) NULL DEFAULT NULL COMMENT '郵箱',
PRIMARY KEY (id)
);
INSERT INTO user (id, name, age, email) VALUES
(1, 'Jone', 18, '[email protected]'),
(2, 'Jack', 20, '[email protected]'),
(3, 'Tom', 28, '[email protected]'),
(4, 'Sandy', 21, '[email protected]'),
(5, 'Billie', 24, '[email protected]');
```
* 編寫專案,初始化專案!使用SpringBoot初始化!
* 匯入依賴
```
```
* yml檔案中配置資料庫**
```
spring:
datasource:
password: 123456
username: root
url: jdbc:mysql://localhost:3306/mybatis_plus?useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8
driver-class-name: com.mysql.jdbc.Driver
```
* 編寫pojo類,mapper介面**
* pojo
```
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
private Long id;
private String name;
private Integer age;
private String email;
}
```
* mapper介面,繼承BaseMapper
```
@Repository //代表是持久層
public interface UserMapper extends Ba