1. 程式人生 > >趕緊收藏吧!MyBatis-Plus萬字長文圖解筆記,錯過了這個村可就沒這個店了

趕緊收藏吧!MyBatis-Plus萬字長文圖解筆記,錯過了這個村可就沒這個店了

## 簡介 > 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