身爲一個程序員連MP都不知道?

簡介

MyBatis-Plus (簡稱 MP)是一個 MyBatis 的增強工具,在 MyBatis 的基礎上只做增強不 做改變,爲簡化開發、提高效率而生

MyBatis 最好的搭檔,就像 魂鬥羅 中的 1P、2P,基友搭配,效率翻倍。

身爲一個程序員連MP都不知道?

 

小編整理出來一份MP134頁的詳情介紹pdf文檔,點贊+關注私信小編“資料”免費獲取;下面給大家展示部分內容。

看圖 ↓

身爲一個程序員連MP都不知道?

 

特性、優點

  1. 無侵入:只做增強不做改變,引入它不會對現有工程產生影響,如絲般順滑
  2. 損耗小:啓動即會自動注入基本 CURD,性能基本無損耗,直接面向對象操作
  3. 強大的 CRUD 操作:內置通用 Mapper、通用 Service,僅僅通過少量配置即可實現單表大部 分 CRUD 操作,更有強大的條件構造器,滿足各類使用需求
  4. 支持 Lambda 形式調用:通過 Lambda 表達式,方便的編寫各類查詢條件,無需再擔心字段寫錯
  5. 支持主自動生成:支持多達 4 種主鍵策略(內含分佈式唯一 ID 生成器 - Sequence),可 自由配置,完美解決主鍵問題
  6. 支持 ActiveRecord 模式:支持 ActiveRecord 形式調用,實體類只需繼承 Model 類即 可進行強大的 CRUD 操作
  7. 支持自定義全局通用操作:支持全局通用方法注入( Write once, use anywhere )
  8. 內置代碼生成器:採用代碼或者 Maven 插件可快速生成 Mapper 、 Model 、 Service 、 Controller 層代碼,支持模板引擎,更有超多自定義配置等您來使用
  9. 內置分頁插件:基於 MyBatis 物理分頁,開發者無需關心具體操作,配置好插件之後,寫分頁 等同於普通 List 查詢
  10. 分頁插件支持多種數據庫:支持 MySQL、MariaDB、Oracle、DB2、H2、HSQL、SQLite、 Postgre、SQLServer 等多種數據庫
  11. 內置性能分析插件:可輸出 Sql 語句以及其執行時間,建議開發測試時啓用該功能,能快速揪 出慢查詢
  12. 內置全局攔截插件:提供全表 delete 、 update 操作智能分析阻斷,也可自定義攔截規則, 預防誤操作

核心功能

一、代碼生成器

AutoGenerator 是 MyBatis-Plus 的代碼生成器,通過 AutoGenerator 可以快速生成 Entity、Mapper、Mapper XML、Service、Controller 等各個模塊的代碼,極大的提升了開發 效率。

演示效果圖:

身爲一個程序員連MP都不知道?

 

二、強大的CRUD接口

Mapper CRUD 接口

  • 通用 CRUD 封裝BaseMapper 接口,爲 Mybatis-Plus 啓動時自動解析實體表關係映射轉 換爲 Mybatis 內部對象注入容器
  • 泛型 T 爲任意實體對象
  • 參數 Serializable 爲任意類型主鍵 Mybatis-Plus 不推薦使用複合主鍵約定每一張表都 有自己的唯一 id 主鍵
  • 對象 Wrapper 爲 條件構造器

身爲一個程序員連MP都不知道?

 

Service CRUD 接口

  • 通用 Service CRUD 封裝IService 接口,進一步封裝 CRUD 採用 get 查詢單行 remove 刪除 list 查詢集合 page 分頁 前綴命名方式區分 Mapper 層避免混淆
  • 泛型 T 爲任意實體對象
  • 建議如果存在自定義通用 Service 方法的可能,請創建自己的 IBaseService 繼承 Mybatis-Plus 提供的基類
  • 對象 Wrapper 爲 條件構造器

身爲一個程序員連MP都不知道?

 

身爲一個程序員連MP都不知道?

 

條件構造器

  • 以下出現的第一個入參 boolean condition 表示該條件是否加入最後生成的sql中
  • 以下代碼塊內的多個方法均爲從上往下補全個別 boolean 類型的入參,默認爲 true
  • 以下出現的泛型 Param 均爲 Wrapper 的子類實例(均具有 AbstractWrapper 的所有方法)
  • 以下方法在入參中出現的 R 爲泛型,在普通wrapper中是 String ,在LambdaWrapper中是函 數(例: Entity::getId , Entity 爲實體類, getId 爲字段 id 的getMethod)
  • 以下方法入參中的 R column 均表示數據庫字段,當 R 具體類型爲 String 時則爲數據庫字段 名(字段名是數據庫關鍵字的自己用轉義符包裹!)!而不是實體類數據字段名!!!,另當 R 具體類 型爲 SFunction 該項目runtime不支持eclipse自家的編譯器!!!
  • 以下舉例均爲使用普通wrapper,入參爲 Map 和 List 的均以 json 形式表現!
  • 使用中如果入參的 Map 或者 List 爲空,則不會加入最後生成的sql中!!!
  • 警告: 不支持以及不贊成在 RPC 調用中把 Wrapper 進行傳輸
  • wrapper 很重
  • 傳輸 wrapper 可以類比爲你的 controller 用 map 接收值(開發一時爽,維護火葬場)
  • 正確的 RPC 調用姿勢是寫一個 DTO 進行傳輸,被調用方再根據 DTO 執行相應的操作
  • 我們拒絕接受任何關於 RPC 傳輸 Wrapper 報錯相關的 issue 甚至 pr

AbstractWrapper

QueryWrapper(LambdaQueryWrapper) 和UpdateWrapper(LambdaUpdateWrapper) 的父類 用於生成 sql 的 where 條件, entity 屬性也用於生成 sql 的 where 條件注意: entity 生 成的 where 條件與 使用各個 api 生成的 where 條件沒有任何關聯行爲

由於這份文檔太詳細了,少了哪一部分都會覺得生澀,但同時礙於平臺文章篇幅受限這一份MP134頁的pdf文檔,點贊+關注私信小編“資料”免費獲取;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章