1. 程式人生 > >MyBatis 進階,MyBatis-Plus!(基於 Springboot 演示)

MyBatis 進階,MyBatis-Plus!(基於 Springboot 演示)

![](//p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/e1b01d34b05b4d7baa5b0c8f2b4ce655~tplv-k3u1fbpfcp-zoom-1.image) 這一篇從一個入門的基本體驗介紹,再到對於 CRUD 的一個詳細介紹,在介紹過程中將涉及到的一些問題,例如逐漸策略,自動填充,樂觀鎖等內容說了一下,只選了一些重要的內容,還有一些沒提及到,具體可以參考官網,簡單的看完,其實會發現,如果遇到單表的 CRUD ,直接用 MP 肯定舒服,如果寫多表,還是用 Mybatis 多點,畢竟直接寫 SQL 會直觀一點,MP 給我的感覺,就是方法封裝了很多,還有一些算比較是用的外掛,但是可讀性會稍微差一點,不過個人有個人的看法哇,祝大家國慶快樂 ~ # 一 引言 最初的 JDBC,我們需要寫大量的程式碼來完成與基本的 CRUD ,或許會在一定程度上使用 Spring 的 JdbcTemplate 或者 Apache 的 DBUtils ,這樣一些對 JDBC 的簡單封裝的工具類。 再到後再使用 Mybatis 等一些優秀的持久層框架,大大的簡化了開發,我們只需要使用一定的 XML 或者註解就可以完成原來的工作 JDBC --> Mybatis 無疑簡化了開發者的工作,而今天我們所講額 MyBatis-Plus 就是在 MyBatis 的基礎上,更加的簡化開發,來一起看看吧! # 二 初識 MyBatis-Plus 下列介紹來自官網: ## (一) 概述 MyBatis-Plus(簡稱 MP)是一個 MyBatis 的增強工具,在 MyBatis 的基礎上只做增強不做改變,為簡化開發、提高效率而生。 > 我們的願景是成為 MyBatis 最好的搭檔,就像魂鬥羅中的 1P、2P,基友搭配,效率翻倍。 ![](//p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/e170b531a61748a49c0f5dcb976c4d97~tplv-k3u1fbpfcp-zoom-1.image) **總之一句話:MyBatis-Plus —— 為簡化開發而生**! ## (二) 特性 - **無侵入**:只做增強不做改變,引入它 不會 對現有工程產生影響,如絲般順滑 - **損耗小**:啟動即會自動注入基本 CRUD,效能基本無損耗,直接面向物件操作 - **強大的 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 操作智慧分析阻斷,也可自定義攔截規則,預防誤操作 ## (三) 支援資料庫 - mysql 、mariadb 、oracle 、db2 、h2 、hsql 、sqlite 、postgresql 、sqlserver 、presto 、Gauss 、Firebird - Phoenix 、clickhouse 、Sybase ASE 、 OceanBase 、達夢資料庫 、虛谷資料庫 、人大金倉資料庫 、南大通用資料庫 # 三 入門初體驗 按照官網的案例簡單試一下 ,注:官網是基於 Springboot 的示例 ``` @Repository public interface UserMapper extends Ba