本章主要是對MyBatis-Plus的初步介紹,包括一些背景知識、環境搭建、初步使用等知識和例子。
對於背景知識,主要包含對MyBatis-Plus的特性介紹、爲何使用MyBatis-Plus、MyBatis與MyBatis-Plus的區別;
對於環境搭建,主要包括JDK的安裝、Eclispe的安裝、MySQL的安裝等;
對於初步使用,主要是以Maven項目爲主的示例說明;**html
MyBatis-Plus(簡稱 MP)是一個 MyBatis 的加強工具,在 MyBatis 的基礎上只作加強不作改變,爲簡化開發、提升效率而生。java
MyBatis-Plus所指望的願景是:
咱們的願景是成爲 MyBatis 最好的搭檔,就像 魂鬥羅 中的 1P、2P,基友搭配,效率翻倍。mysql
如圖所示:webpack
MyBatis-Plus的代碼託管地址以下所示:git
碼雲: https://gitee.com/baomidou/my...github
Github: https://github.com/baomidou/m...web
特性sql
• 無侵入:只作加強不作改變,引入它不會對現有工程產生影響,如絲般順滑數據庫
• 損耗小:啓動即會自動注入基本 CURD,性能基本無損耗,直接面向對象操做apache
• 強大的 CRUD 操做:內置通用 Mapper、通用 Service,僅僅經過少許配置便可實現單表大部分 CRUD 操做,更有強大的條件構造器,知足各種使用需求
• 支持 Lambda 形式調用:經過 Lambda 表達式,方便的編寫各種查詢條件,無需再擔憂字段寫錯
• 支持多種數據庫:支持 MySQL、MariaDB、Oracle、DB二、H二、HSQL、SQLite、Postgre、SQLServer200五、SQLServer 等多種數據庫
• 支持主鍵自動生成:支持多達 4 種主鍵策略(內含分佈式惟一 ID 生成器 - Sequence),可自由配置,完美解決主鍵問題
• 支持 XML 熱加載:Mapper 對應的 XML 支持熱加載,對於簡單的 CRUD 操做,甚至能夠無 XML 啓動
• 支持 ActiveRecord 模式:支持 ActiveRecord 形式調用,實體類只需繼承 Model 類便可進行強大的 CRUD 操做
• 支持自定義全局通用操做:支持全局通用方法注入( Write once, use anywhere )
• 支持關鍵詞自動轉義:支持數據庫關鍵詞(order、key......)自動轉義,還可自定義關鍵詞
• 內置代碼生成器:採用代碼或者 Maven 插件可快速生成 Mapper 、 Model 、 Service 、 Controller 層代碼,支持模板引擎,更有超多自定義配置等您來使用
• 內置分頁插件:基於 MyBatis 物理分頁,開發者無需關心具體操做,配置好插件以後,寫分頁等同於普通 List 查詢
• 內置性能分析插件:可輸出 Sql 語句以及其執行時間,建議開發測試時啓用該功能,能快速揪出慢查詢
• 內置全局攔截插件:提供全表 delete 、 update 操做智能分析阻斷,也可自定義攔截規則,預防誤操做
• 內置 Sql 注入剝離器:支持 Sql 注入剝離,有效預防 Sql 注入攻擊
關於爲何要使用MyBatis-Plus這個問題,我結合我的的使用經驗,從代碼生成器、易學性、應用性、安全性角度分析,概括以下幾個方面?
(1) MyBatis的代碼生成器生成的一大堆XML或者是實體及其Dao太過繁瑣,而MyBatis-Plus 的代碼生成器,生成的代碼從Entity到Dao、Service及其實現類還有Controller包含XML,能夠說是一整套生成,生成的代碼十分簡潔實用;
(2) MyBatis-Plus原理就是MyBatis,只不過該開源做者對其作了強化,所以絲絕不影響原理怎麼使用MyBatis,只不過對於實體而言,須要加必定的註解,註解也是很是易懂的;
(3) MyBatis-Plus在很多開源項目中都很流行,好比guns、renren-security等等,同時也有很多公司也在用,
如圖所示:
(4) 至於安全方面,以前咱們的公司的第一個項目使用的是MyBatis,後來另外兩個項目接連使用MyBatis-Plus做爲持久層,目前在線上暫未出現問題,即使出現問題,也不是由於MyBatis-Plus,問題通常一般是業務方面的bug之類的;
相同點:
它們都是用於持久層開發(DAO層,又稱數據訪問層),通常都用於經常使用的SSM框架或者是SpringBoot構建微服務,關於SSM框架實戰和SpringBoot集成構建微服務,後面會講到的。
不一樣點:
(1) CRUD差別,MyBatis對於CRUD沒有通用的一套,通常還得本身寫SQL,複製過來,複製過去,而MyBatis-Plus對於CRUD有通用的一套。通用的一套,在這裏指的是DAO、Service等;
(2) 對於實體與表及其字段定義不一樣,MyBatis對於實體與在字段,經過XML文件方式,而My Batis-Plus經過@TableName讓實體與表關聯,經過@TableField與表字段關聯,若是是XML文件方式的話,實體與字段映射,主要針對自定義SQL;
(3) 插件成熟和豐富程度,MyBatis歷史相對比MyBatis-Plus要久,插件豐富、成熟且強大,不是MyBatis-Plus所能比擬的,可是MyBatis-Plus也一直不斷的更新強化本身,不過差距確定是有的;
(4) 通用性不一樣,MyBatis是外國人開發的,國內外皆通用,而MyBatis-Plus是由國內人士自發組織的開源,目前主要通用於國內;
開發過程當中,環境準備是必須的。環境準備包含這麼幾個指標?
第1、 運行環境;
第2、 使用工具;
從運行環境的角度看,示例以下:
例1:使用Java做爲開發的語言就須要安裝對應的JDK;
例2:要使用webpack打包須要Node.JS的環境;
從使用工具的角度看,示例以下:
例1:使用IDEA或者Eclipse做爲Java的開發工具;
例2:例如Maven做爲項目構建工具;
本節主要圍繞JDK的安裝、Eclipse的安裝、MySQL的安裝、Maven的安裝等方面來說解環境準備,這些準備主要爲了後續更好的講解。
JDK是 Java 語言的軟件開發工具包,主要用於移動設備、嵌入式設備上的java應用程序。JDK是整個java開發的核心,它包含了JAVA的運行環境(JVM+Java系統類庫)和JAVA工具。
JDK的下載地址以下所示:
https://www.oracle.com/techne...
以下圖所示:
通常Windos安裝選擇的exe的安裝方式,先下載後安裝,關於exe安裝軟件的方式就很少說了。
Eclipse 是一個開放源代碼的、基於Java的可擴展開發平臺。就其自己而言,它只是一個框架和一組服務,用於經過插件組件構建開發環境。幸運的是,Eclipse 附帶了一個標準的插件集,包括Java開發工具(Java Development Kit,JDK)。
Eclipse的下載地址以下:https://www.eclipse.org/downl...
以下圖所示,能夠根據本身的須要安裝不一樣版本的Eclipse
MySQL是一個關係型數據庫管理系統,由瑞典MySQL AB 公司開發,目前屬於 Oracle 旗下產品。MySQL 是最流行的關係型數據庫管理系統之一,在 WEB 應用方面,MySQL是最好的 RDBMS (Relational Database Management System,關係數據庫管理系統) 應用軟件。
MySQL是一種關係數據庫管理系統,關係數據庫將數據保存在不一樣的表中,而不是將全部數據放在一個大倉庫內,這樣就增長了速度並提升了靈活性。
MySQL所使用的 SQL 語言是用於訪問數據庫的最經常使用標準化語言。MySQL 軟件採用了雙受權政策,分爲社區版和商業版,因爲其體積小、速度快、整體擁有成本低,尤爲是開放源碼這一特色,通常中小型網站的開發都選擇 MySQL 做爲網站數據庫。
MySQL的下載地址以下所示:
https://dev.mysql.com/downloa...
以下圖所示,這是目前MySQL最新版本5.7
Maven項目對象模型(POM) 能夠經過一小段描述信息來管理項目的構建,報告和文檔的項目管理工具軟件。
Maven 除了以程序構建能力爲特點以外,還提供高級項目管理工具。因爲 Maven 的缺省構建規則有較高的可重用性,因此經常用兩三行 Maven 構建腳本就能夠構建簡單的項目。因爲 Maven 的面向項目的方法,許多 Apache Jakarta 項目發文時使用 Maven,並且公司項目採用 Maven 的比例在持續增加。
Maven的下載地址爲: http://maven.apache.org/downl...
以下圖所示:
通過前面的MyBatis-Plus簡介,相信你對MyBatis-Plus有一個大體的瞭解。
對應的環境準備小節,我假定你環境已經所有安裝好了,對應Java開發者而言搭建環境是必不可少的技能。不管是在校就讀的大學生、仍是出來工做後的職業者,都是基礎當中的基礎。下面咱們進入簡單實用這一環節。
項目結構如圖所示:
關於依賴的下載地址,能夠去Maven的官方倉庫中下載:
https://mvnrepository.com/tag...
如圖所示:
UserDao.xml
mybatis-config.xml
最終的運行結果是經過Junit測試沒有報錯,輸出以下:
說明:
其實這個例子看一看,能夠發現與MyBatis的差異並不大,能夠說就是MyBatis,不過區別仍是有的,好比maven依賴並無包含MyBatis,
可是實際上它卻具備與MyBatis同樣的功能,因此從這個角度來看,MyBatis-Plus就是MyBatis,由於它擁有MyBatis的全部功能,但從另外的角度來看,它們仍是有必定的差別,這個差別形成了MyBatis-Plus比MyBatis要強大的多。
這一章主要講的就是MyBatis-Plus的相關背景知識和環境準備及其簡單示例,經過這些理論+對應的例子可以讓你對MyBatis-Plus有一個初步的瞭解。
關於本章示例工程源碼下載地址爲:
https://github.com/developers...
如需轉載請註明原創地址,謝謝合做。