MyBatis-Plus介紹及Spring Boot 3集成指南
我們每個(gè)Java開發(fā)者都在使用springboot+mybatis開發(fā)時(shí),我們經(jīng)常發(fā)現(xiàn)自己需要為每張數(shù)據(jù)庫表單獨(dú)編寫XML文件,并且為每個(gè)表都需要編寫一套增刪改查的方法,較為繁瑣。為了解決這一問題,MyBatis-Plus應(yīng)運(yùn)而生。在本文中,我們將介紹MyBatis-Plus的應(yīng)用以及如何在Spring Boot 3中集成MyBatis。
什么是MyBatis-Plus?
github地址:https://github.com/baomidou/mybatis-plus
MyBatis-Plus 是一個(gè) MyBatis 的增強(qiáng)工具,在 MyBatis 的基礎(chǔ)上只做增強(qiáng)不做改變,為簡(jiǎn)化開發(fā)、提高效率而生。有以下特性:
- 無侵入:只做增強(qiáng)不做改變,引入它不會(huì)對(duì)現(xiàn)有工程產(chǎn)生影響,如絲般順滑
- 損耗?。?jiǎn)?dòng)即會(huì)自動(dòng)注入基本 CURD,性能基本無損耗,直接面向?qū)ο蟛僮?/li>
- 強(qiáng)大的 CRUD 操作:內(nèi)置通用 Mapper、通用 Service,僅僅通過少量配置即可實(shí)現(xiàn)單表大部分 CRUD 操作,更有強(qiáng)大的條件構(gòu)造器,滿足各類使用需求
- 支持 Lambda 形式調(diào)用:通過 Lambda 表達(dá)式,方便的編寫各類查詢條件,無需再擔(dān)心字段寫錯(cuò)
- 支持主鍵自動(dòng)生成:支持多達(dá) 4 種主鍵策略(內(nèi)含分布式唯一 ID 生成器 - Sequence),可自由配置,完美解決主鍵問題
- 支持 ActiveRecord 模式:支持 ActiveRecord 形式調(diào)用,實(shí)體類只需繼承 Model 類即可進(jìn)行強(qiáng)大的 CRUD 操作
- 支持自定義全局通用操作:支持全局通用方法注入( Write once, use anywhere )
- 內(nèi)置代碼生成器:采用代碼或者 Maven 插件可快速生成 Mapper 、 Model 、 Service 、 Controller 層代碼,支持模板引擎,更有超多自定義配置等您來使用
- 內(nèi)置分頁插件:基于 MyBatis 物理分頁,開發(fā)者無需關(guān)心具體操作,配置好插件之后,寫分頁等同于普通 List 查詢
- 分頁插件支持多種數(shù)據(jù)庫:支持 MySQL、MariaDB、Oracle、DB2、H2、HSQL、SQLite、Postgre、SQLServer 等多種數(shù)據(jù)庫
- 內(nèi)置性能分析插件:可輸出 SQL 語句以及其執(zhí)行時(shí)間,建議開發(fā)測(cè)試時(shí)啟用該功能,能快速揪出慢查詢
- 內(nèi)置全局?jǐn)r截插件:提供全表 delete 、 update 操作智能分析阻斷,也可自定義攔截規(guī)則,預(yù)防誤操作
其在github目前已經(jīng)有15.9k star,足以看出大家對(duì)其的喜愛。
Spring Boot 3集成MyBatis-Plus
在你的Spring Boot項(xiàng)目的pom.xml中添加MyBatis-Plus的依賴:
<dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.5.6</version> <exclusions> <exclusion> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>3.0.3</version> </dependency>
我們此處引入 MyBatis Plus 的版本為最新版本 3.5.6,并排除了其中的 mybatis-spring 依賴,并且另外引入了 mybatis-spring 的版本為 3.0.3。我們此處排除 MyBatis Plus中的mybatis-spring的依賴,另外引入了高版本的 mybatis,是因?yàn)镸yBatis Plus中引入的mybatis版本為2.1.2版本,在有些springboot3的版本中會(huì)有依賴不兼容的問題。
在啟動(dòng)類中配置注解@MapperScan,用于配置Mapper接口的掃描路徑。
@SpringBootApplication @MapperScan("cn.xj.ihs.**.mapper") public class IHSApplication { public static void main(String[] args) { SpringApplication.run(IHSApplication.class, args); } }
Spring Boot 3集成MyBatis-Plus代碼生成器
在你的Spring Boot項(xiàng)目的pom.xml中添加myBatis-plus-generator的依賴:
<dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-generator</artifactId> <version>3.5.5</version> </dependency> <dependency> <groupId>org.apache.velocity</groupId> <artifactId>velocity-engine-core</artifactId> <version>2.3</version> </dependency>
在測(cè)試包下創(chuàng)建 MyBatisPlusGenerator.java,以交互的模式快速且優(yōu)雅生成你想要的代碼。
public class MyBatisPlusGenerator { // 處理 all 情況 protected static List<String> getTables(String tables) { return "all".equals(tables) ? Collections.emptyList() : Arrays.asList(tables.split(",")); } public static void main(String[] args) { FastAutoGenerator.create("jdbc:mysql://192.168.10.171:3306/xj_test", "root", "xj2022") // 全局配置 .globalConfig((scanner, builder) -> { //設(shè)置注釋信息-作者 builder.author(scanner.apply("請(qǐng)輸入作者名稱?")); //設(shè)置swagger注解 //builder.enableSwagger(); //設(shè)置代碼生成的路徑 builder.outputDir(System.getProperty("user.dir")+"/src/main/java"); }) // 包配置 .packageConfig((scanner, builder) -> { builder.parent(scanner.apply("請(qǐng)輸入包名?")) //設(shè)置xml文件路徑 .pathInfo(Collections.singletonMap(OutputFile.xml, System.getProperty("user.dir")+"/src/main/resources/mapper")); }) // 策略配置 .strategyConfig((scanner, builder) -> { builder.addInclude(MyBatisPlusGenerator.getTables(scanner.apply("請(qǐng)輸入表名,多個(gè)英文逗號(hào)分隔?所有輸入 all"))) .controllerBuilder().enableRestStyle().enableHyphenStyle().build(); builder.serviceBuilder() .formatServiceFileName("%sService") .formatServiceImplFileName("%sServiceImp") .build(); //entity的策略配置 builder.entityBuilder() //啟用Lombok插件 .enableLombok() .enableTableFieldAnnotation() .versionColumnName("version") .logicDeleteColumnName("is_delete") //設(shè)置字段名的命名策略為下劃線轉(zhuǎn)駝峰命名 .columnNaming(NamingStrategy.underline_to_camel) //主鍵策略遞增 .idType(IdType.AUTO) .formatFileName("%sEntity") .build(); }) .execute(); } }
運(yùn)行代碼,輸入作者,生成代碼的包路徑,數(shù)據(jù)庫表來生成代碼:
這樣,我們就能夠快速生成一套代碼了。我們只需在生成的代碼基礎(chǔ)上添加我們的業(yè)務(wù)處理邏輯即可。
至此,你已經(jīng)完成了MyBatis-Plus與Spring Boot 3的集成。通過MyBatis-Plus,你可以更加高效地開發(fā)數(shù)據(jù)訪問層,減少重復(fù)代碼的編寫,提升系統(tǒng)的開發(fā)效率和可維護(hù)性。
總結(jié)
本文介紹了MyBatis-Plus的基本特性及其與Spring Boot 3的集成步驟。通過使用MyBatis-Plus,開發(fā)者可以快速地搭建和開發(fā)數(shù)據(jù)訪問層,同時(shí)提高代碼質(zhì)量和開發(fā)效率。希望本文能對(duì)你理解和使用MyBatis-Plus有所幫助。
到此這篇關(guān)于MyBatis-Plus介紹及Spring Boot 3集成指南的文章就介紹到這了,更多相關(guān)MyBatis-Plus集成Spring Boot內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
maven deploy時(shí)報(bào)錯(cuò)的解決方法
這篇文章主要介紹了maven deploy時(shí)報(bào)錯(cuò)的解決方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09Java-文件File簡(jiǎn)單實(shí)用方法(分享)
下面小編就為大家?guī)硪黄狫ava-文件File簡(jiǎn)單實(shí)用方法(分享)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-08-08mybatis-plus?Wrapper條件構(gòu)造器updateForSet更新方式
這篇文章主要介紹了mybatis-plus?Wrapper條件構(gòu)造器updateForSet更新方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03springboot集成Feign的實(shí)現(xiàn)示例
Feign是聲明式HTTP客戶端,用于簡(jiǎn)化微服務(wù)之間的REST調(diào)用,本文就來介紹一下springboot集成Feign的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-11-11詳解Java編程中包package的內(nèi)容與包對(duì)象的規(guī)范
這篇文章主要介紹了Java編程中包package的內(nèi)容與包對(duì)象的規(guī)范,是Java入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-12-12關(guān)于Spring?Cache?緩存攔截器(?CacheInterceptor)
這篇文章主要介紹了關(guān)于Spring?Cache緩存攔截器(?CacheInterceptor),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-12-12