摘要:是最流行的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)之一,在應(yīng)用方面,是最好的,關(guān)系數(shù)據(jù)庫管理系統(tǒng)應(yīng)用軟件。是一種關(guān)系數(shù)據(jù)庫管理系統(tǒng),關(guān)系數(shù)據(jù)庫將數(shù)據(jù)保存在不同的表中,而不是將所有數(shù)據(jù)放在一個大倉庫內(nèi),這樣就增加了速度并提高了靈活性。
本章主要是對MyBatis-Plus的初步介紹,包括一些背景知識、環(huán)境搭建、初步使用等知識和例子。
對于背景知識,主要包含對MyBatis-Plus的特性介紹、為什么使用MyBatis-Plus、MyBatis與MyBatis-Plus的區(qū)別;
對于環(huán)境搭建,主要包括JDK的安裝、Eclispe的安裝、MySQL的安裝等;
對于初步使用,主要是以Maven項目為主的示例說明;**
MyBatis-Plus(簡稱 MP)是一個 MyBatis 的增強工具,在 MyBatis 的基礎(chǔ)上只做增強不做改變,為簡化開發(fā)、提高效率而生。
MyBatis-Plus所期望的愿景是:
我們的愿景是成為 MyBatis 最好的搭檔,就像 魂斗羅 中的 1P、2P,基友搭配,效率翻倍。
如圖所示:
MyBatis-Plus的代碼托管地址如下所示:
碼云: https://gitee.com/baomidou/my...
Github: https://github.com/baomidou/m...
1.1.1 MyBatis-Plus特性特性
? 無侵入:只做增強不做改變,引入它不會對現(xiàn)有工程產(chǎn)生影響,如絲般順滑
? 損耗?。簡蛹磿詣幼⑷牖?CURD,性能基本無損耗,直接面向?qū)ο蟛僮?/p>
? 強大的 CRUD 操作:內(nèi)置通用 Mapper、通用 Service,僅僅通過少量配置即可實現(xiàn)單表大部分 CRUD 操作,更有強大的條件構(gòu)造器,滿足各類使用需求
? 支持 Lambda 形式調(diào)用:通過 Lambda 表達式,方便的編寫各類查詢條件,無需再擔(dān)心字段寫錯
? 支持多種數(shù)據(jù)庫:支持 MySQL、MariaDB、Oracle、DB2、H2、HSQL、SQLite、Postgre、SQLServer2005、SQLServer 等多種數(shù)據(jù)庫
? 支持主鍵自動生成:支持多達 4 種主鍵策略(內(nèi)含分布式唯一 ID 生成器 - Sequence),可自由配置,完美解決主鍵問題
? 支持 XML 熱加載:Mapper 對應(yīng)的 XML 支持熱加載,對于簡單的 CRUD 操作,甚至可以無 XML 啟動
? 支持 ActiveRecord 模式:支持 ActiveRecord 形式調(diào)用,實體類只需繼承 Model 類即可進行強大的 CRUD 操作
? 支持自定義全局通用操作:支持全局通用方法注入( Write once, use anywhere )
? 支持關(guān)鍵詞自動轉(zhuǎn)義:支持?jǐn)?shù)據(jù)庫關(guān)鍵詞(order、key......)自動轉(zhuǎn)義,還可自定義關(guān)鍵詞
? 內(nèi)置代碼生成器:采用代碼或者 Maven 插件可快速生成 Mapper 、 Model 、 Service 、 Controller 層代碼,支持模板引擎,更有超多自定義配置等您來使用
? 內(nèi)置分頁插件:基于 MyBatis 物理分頁,開發(fā)者無需關(guān)心具體操作,配置好插件之后,寫分頁等同于普通 List 查詢
? 內(nèi)置性能分析插件:可輸出 Sql 語句以及其執(zhí)行時間,建議開發(fā)測試時啟用該功能,能快速揪出慢查詢
? 內(nèi)置全局?jǐn)r截插件:提供全表 delete 、 update 操作智能分析阻斷,也可自定義攔截規(guī)則,預(yù)防誤操作
? 內(nèi)置 Sql 注入剝離器:支持 Sql 注入剝離,有效預(yù)防 Sql 注入攻擊
1.1.2 為什么要使用MyBatis-Plus關(guān)于為什么要使用MyBatis-Plus這個問題,我結(jié)合個人的使用經(jīng)驗,從代碼生成器、易學(xué)性、應(yīng)用性、安全性角度分析,歸納如下幾個方面?
(1) MyBatis的代碼生成器生成的一大堆XML或者是實體及其Dao太過繁瑣,而MyBatis-Plus 的代碼生成器,生成的代碼從Entity到Dao、Service及其實現(xiàn)類還有Controller包含XML,可以說是一整套生成,生成的代碼十分簡潔實用;
(2) MyBatis-Plus原理就是MyBatis,只不過該開源作者對其做了強化,因此絲毫不影響原理怎么使用MyBatis,只不過對于實體而言,需要加一定的注解,注解也是非常易懂的;
(3) MyBatis-Plus在不少開源項目中都很流行,比如guns、renren-security等等,同時也有不少公司也在用,
如圖所示:
(4) 至于安全方面,之前我們的公司的第一個項目使用的是MyBatis,后來另外兩個項目接連使用MyBatis-Plus作為持久層,目前在線上暫未出現(xiàn)問題,即便出現(xiàn)問題,也不是因為MyBatis-Plus,問題一般通常是業(yè)務(wù)方面的bug之類的;
1.1.3 MyBatis-Plus與MyBatis的區(qū)別相同點:
它們都是用于持久層開發(fā)(DAO層,又稱數(shù)據(jù)訪問層),一般都用于常用的SSM框架或者是SpringBoot構(gòu)建微服務(wù),關(guān)于SSM框架實戰(zhàn)和SpringBoot集成構(gòu)建微服務(wù),后面會講到的。
不同點:
(1) CRUD差異,MyBatis對于CRUD沒有通用的一套,一般還得自己寫SQL,復(fù)制過來,復(fù)制過去,而MyBatis-Plus對于CRUD有通用的一套。通用的一套,在這里指的是DAO、Service等;
(2) 對于實體與表及其字段定義不同,MyBatis對于實體與在字段,通過XML文件方式,而My Batis-Plus通過@TableName讓實體與表關(guān)聯(lián),通過@TableField與表字段關(guān)聯(lián),如果是XML文件方式的話,實體與字段映射,主要針對自定義SQL;
(3) 插件成熟和豐富程度,MyBatis歷史相對比MyBatis-Plus要久,插件豐富、成熟且強大,不是MyBatis-Plus所能比擬的,但是MyBatis-Plus也一直不斷的更新強化自己,不過差距肯定是有的;
(4) 通用性不同,MyBatis是外國人開發(fā)的,國內(nèi)外皆通用,而MyBatis-Plus是由國內(nèi)人士自發(fā)組織的開源,目前主要通用于國內(nèi);
1.2 環(huán)境準(zhǔn)備開發(fā)過程中,環(huán)境準(zhǔn)備是必須的。環(huán)境準(zhǔn)備包含這么幾個指標(biāo)?
第一、 運行環(huán)境;
第二、 使用工具;
從運行環(huán)境的角度看,示例如下:
例1:使用Java作為開發(fā)的語言就需要安裝對應(yīng)的JDK;
例2:要使用webpack打包需要Node.JS的環(huán)境;
從使用工具的角度看,示例如下:
例1:使用IDEA或者Eclipse作為Java的開發(fā)工具;
例2:例如Maven作為項目構(gòu)建工具;
本節(jié)主要圍繞JDK的安裝、Eclipse的安裝、MySQL的安裝、Maven的安裝等方面來講解環(huán)境準(zhǔn)備,這些準(zhǔn)備主要為了后續(xù)更好的講解。
1.2.1 JDK的下載JDK是 Java 語言的軟件開發(fā)工具包,主要用于移動設(shè)備、嵌入式設(shè)備上的java應(yīng)用程序。JDK是整個java開發(fā)的核心,它包含了JAVA的運行環(huán)境(JVM+Java系統(tǒng)類庫)和JAVA工具。
JDK的下載地址如下所示:
https://www.oracle.com/techne...
如下圖所示:
一般Windos安裝選擇的exe的安裝方式,先下載后安裝,關(guān)于exe安裝軟件的方式就不多說了。
1.2.2 Eclipse的下載Eclipse 是一個開放源代碼的、基于Java的可擴展開發(fā)平臺。就其本身而言,它只是一個框架和一組服務(wù),用于通過插件組件構(gòu)建開發(fā)環(huán)境。幸運的是,Eclipse 附帶了一個標(biāo)準(zhǔn)的插件集,包括Java開發(fā)工具(Java Development Kit,JDK)。
Eclipse的下載地址如下:https://www.eclipse.org/downl...
如下圖所示,可以根據(jù)自己的需要安裝不同版本的Eclipse
1.2.3 MySQL的下載MySQL是一個關(guān)系型數(shù)據(jù)庫管理系統(tǒng),由瑞典MySQL AB 公司開發(fā),目前屬于 Oracle 旗下產(chǎn)品。MySQL 是最流行的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)之一,在 WEB 應(yīng)用方面,MySQL是最好的 RDBMS (Relational Database Management System,關(guān)系數(shù)據(jù)庫管理系統(tǒng)) 應(yīng)用軟件。
MySQL是一種關(guān)系數(shù)據(jù)庫管理系統(tǒng),關(guān)系數(shù)據(jù)庫將數(shù)據(jù)保存在不同的表中,而不是將所有數(shù)據(jù)放在一個大倉庫內(nèi),這樣就增加了速度并提高了靈活性。
MySQL所使用的 SQL 語言是用于訪問數(shù)據(jù)庫的最常用標(biāo)準(zhǔn)化語言。MySQL 軟件采用了雙授權(quán)政策,分為社區(qū)版和商業(yè)版,由于其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點,一般中小型網(wǎng)站的開發(fā)都選擇 MySQL 作為網(wǎng)站數(shù)據(jù)庫。
MySQL的下載地址如下所示:
https://dev.mysql.com/downloa...
如下圖所示,這是目前MySQL最新版本5.7
1.2.4 Maven的下載Maven項目對象模型(POM) 可以通過一小段描述信息來管理項目的構(gòu)建,報告和文檔的項目管理工具軟件。
Maven 除了以程序構(gòu)建能力為特色之外,還提供高級項目管理工具。由于 Maven 的缺省構(gòu)建規(guī)則有較高的可重用性,所以常常用兩三行 Maven 構(gòu)建腳本就可以構(gòu)建簡單的項目。由于 Maven 的面向項目的方法,許多 Apache Jakarta 項目發(fā)文時使用 Maven,而且公司項目采用 Maven 的比例在持續(xù)增長。
Maven的下載地址為: http://maven.apache.org/downl...
如下圖所示:
1.3 簡單使用經(jīng)過前面的MyBatis-Plus簡介,相信你對MyBatis-Plus有一個大致的了解。
對應(yīng)的環(huán)境準(zhǔn)備小節(jié),我假定你環(huán)境已經(jīng)全部安裝好了,對應(yīng)Java開發(fā)者而言搭建環(huán)境是必不可少的技能。無論是在校就讀的大學(xué)生、還是出來工作后的職業(yè)者,都是基礎(chǔ)當(dāng)中的基礎(chǔ)。下面我們進入簡單實用這一環(huán)節(jié)。
項目結(jié)構(gòu)如圖所示:
1.3.1 導(dǎo)入Maven依賴關(guān)于依賴的下載地址,可以去Maven的官方倉庫中下載:
https://mvnrepository.com/tag...
如圖所示:
1.3.2 準(zhǔn)備SQL腳本 1.3.3 建立實體 1.3.4 編寫DAO 1.3.5 編寫XML文件和對應(yīng)的配置文件UserDao.xml
mybatis-config.xml
1.3.6 編寫工具類 1.3.7 測試最終的運行結(jié)果是通過Junit測試沒有報錯,輸出如下:
說明:
其實這個例子看一看,可以發(fā)現(xiàn)與MyBatis的差別并不大,可以說就是MyBatis,不過區(qū)別還是有的,比如maven依賴并沒有包含MyBatis,
但是實際上它卻具有與MyBatis一樣的功能,所以從這個角度來看,MyBatis-Plus就是MyBatis,因為它擁有MyBatis的所有功能,但從另外的角度來看,它們還是有一定的差異,這個差異造成了MyBatis-Plus比MyBatis要強大的多。
1.4 小結(jié)這一章主要講的就是MyBatis-Plus的相關(guān)背景知識和環(huán)境準(zhǔn)備及其簡單示例,通過這些理論+對應(yīng)的例子能夠讓你對MyBatis-Plus有一個初步的了解。
關(guān)于本章示例工程源碼下載地址為:
https://github.com/developers...
如需轉(zhuǎn)載請注明原創(chuàng)地址,謝謝合作。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/72697.html
摘要:各方面有各種常見的良好示例,包括日志記錄,聲明式事務(wù),安全性,緩存等。聲明式事務(wù)管理這意味著你從業(yè)務(wù)代碼中分離事務(wù)管理。但作為一種橫切關(guān)注點,聲明式事務(wù)管理可以使用方法進行模塊化。支持使用框架的聲明式事務(wù)管理。 本章主要內(nèi)容包括Spring簡介、Spring的兩大特性(IOC和AOP)、事務(wù)MyBatis集成Spring等。也許有讀者會疑惑,明明是MyBatis-Plus實戰(zhàn),怎么還講...
摘要:的作用可以看到,它給我們提供了一些核心的功能代碼生成器和現(xiàn)成的接口以及可以結(jié)合的條件構(gòu)造器使我們的代碼變得足夠優(yōu)雅,分頁的使用也是相當(dāng)?shù)姆奖悖约疤峁┝瞬煌闹麈I生成策略。 簡介 Mybatis-Plus是在Mybatis的基礎(chǔ)上,國人開發(fā)的一款持久層框架。 showImg(https://segmentfault.com/img/bVbvFk4?w=2022&h=862); 并且榮獲...
摘要:讀取控制臺內(nèi)容請輸入請輸入正確的代碼生成器全局配置實體屬性注解數(shù)據(jù)源配置包配置這里有個模塊名的配置,可以注釋掉不用。 最近在研究mybatis,然后就去找簡化mybatis開發(fā)的工具,發(fā)現(xiàn)就有通用Mapper和mybatis-plus兩個比較好的可是使用,可是經(jīng)過對比發(fā)現(xiàn)還是mybatis-plus比較好,個人覺得,勿噴。。。 集成還是非常簡單的,然后就在研究怎么分頁,開始研究通用ma...
摘要:一直想搞一套后臺基本開發(fā)框架出來,無奈太忙其實太懶,最近受到兩位大佬的啟發(fā),就改動了一下大佬做好的東西。更新簡單整合使用項目目錄修復(fù)修改模板文件的包名問題,之后只在包里文件中的與即可地址 一直想搞一套后臺基本開發(fā)框架出來,無奈太忙(其實太懶),最近受到兩位大佬的啟發(fā),就改動了一下大佬做好的東西。初始版本:https://github.com/lihengming... showImg(...
閱讀 3770·2021-09-02 15:11
閱讀 4780·2021-08-16 10:47
閱讀 1663·2019-08-29 18:35
閱讀 3181·2019-08-28 17:54
閱讀 2933·2019-08-26 11:37
閱讀 1574·2019-08-23 16:51
閱讀 1897·2019-08-23 14:36
閱讀 1880·2019-08-23 14:21