MyBatis-Plus介紹及Spring Boot 3集成指南
我們每個Java開發(fā)者都在使用springboot+mybatis開發(fā)時,我們經(jīng)常發(fā)現(xiàn)自己需要為每張數(shù)據(jù)庫表單獨編寫XML文件,并且為每個表都需要編寫一套增刪改查的方法,較為繁瑣。為了解決這一問題,MyBatis-Plus應(yīng)運而生。在本文中,我們將介紹MyBatis-Plus的應(yīng)用以及如何在Spring Boot 3中集成MyBatis。
什么是MyBatis-Plus?
github地址:https://github.com/baomidou/mybatis-plus
MyBatis-Plus 是一個 MyBatis 的增強工具,在 MyBatis 的基礎(chǔ)上只做增強不做改變,為簡化開發(fā)、提高效率而生。有以下特性:
- 無侵入:只做增強不做改變,引入它不會對現(xiàn)有工程產(chǎn)生影響,如絲般順滑
- 損耗?。簡蛹磿詣幼⑷牖?CURD,性能基本無損耗,直接面向?qū)ο蟛僮?/li>
- 強大的 CRUD 操作:內(nèi)置通用 Mapper、通用 Service,僅僅通過少量配置即可實現(xiàn)單表大部分 CRUD 操作,更有強大的條件構(gòu)造器,滿足各類使用需求
- 支持 Lambda 形式調(diào)用:通過 Lambda 表達式,方便的編寫各類查詢條件,無需再擔(dān)心字段寫錯
- 支持主鍵自動生成:支持多達 4 種主鍵策略(內(nèi)含分布式唯一 ID 生成器 - Sequence),可自由配置,完美解決主鍵問題
- 支持 ActiveRecord 模式:支持 ActiveRecord 形式調(diào)用,實體類只需繼承 Model 類即可進行強大的 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í)行時間,建議開發(fā)測試時啟用該功能,能快速揪出慢查詢
- 內(nèi)置全局攔截插件:提供全表 delete 、 update 操作智能分析阻斷,也可自定義攔截規(guī)則,預(yù)防誤操作
其在github目前已經(jīng)有15.9k star,足以看出大家對其的喜愛。
Spring Boot 3集成MyBatis-Plus
在你的Spring Boot項目的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,是因為MyBatis Plus中引入的mybatis版本為2.1.2版本,在有些springboot3的版本中會有依賴不兼容的問題。
在啟動類中配置注解@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項目的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>
在測試包下創(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("請輸入作者名稱?")); //設(shè)置swagger注解 //builder.enableSwagger(); //設(shè)置代碼生成的路徑 builder.outputDir(System.getProperty("user.dir")+"/src/main/java"); }) // 包配置 .packageConfig((scanner, builder) -> { builder.parent(scanner.apply("請輸入包名?")) //設(shè)置xml文件路徑 .pathInfo(Collections.singletonMap(OutputFile.xml, System.getProperty("user.dir")+"/src/main/resources/mapper")); }) // 策略配置 .strategyConfig((scanner, builder) -> { builder.addInclude(MyBatisPlusGenerator.getTables(scanner.apply("請輸入表名,多個英文逗號分隔?所有輸入 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(); } }
運行代碼,輸入作者,生成代碼的包路徑,數(shù)據(jù)庫表來生成代碼:
這樣,我們就能夠快速生成一套代碼了。我們只需在生成的代碼基礎(chǔ)上添加我們的業(yè)務(wù)處理邏輯即可。
至此,你已經(jīng)完成了MyBatis-Plus與Spring Boot 3的集成。通過MyBatis-Plus,你可以更加高效地開發(fā)數(shù)據(jù)訪問層,減少重復(fù)代碼的編寫,提升系統(tǒng)的開發(fā)效率和可維護性。
總結(jié)
本文介紹了MyBatis-Plus的基本特性及其與Spring Boot 3的集成步驟。通過使用MyBatis-Plus,開發(fā)者可以快速地搭建和開發(fā)數(shù)據(jù)訪問層,同時提高代碼質(zhì)量和開發(fā)效率。希望本文能對你理解和使用MyBatis-Plus有所幫助。
到此這篇關(guān)于MyBatis-Plus介紹及Spring Boot 3集成指南的文章就介紹到這了,更多相關(guān)MyBatis-Plus集成Spring Boot內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
mybatis-plus?Wrapper條件構(gòu)造器updateForSet更新方式
這篇文章主要介紹了mybatis-plus?Wrapper條件構(gòu)造器updateForSet更新方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-03-03詳解Java編程中包package的內(nèi)容與包對象的規(guī)范
這篇文章主要介紹了Java編程中包package的內(nèi)容與包對象的規(guī)范,是Java入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下2015-12-12關(guān)于Spring?Cache?緩存攔截器(?CacheInterceptor)
這篇文章主要介紹了關(guān)于Spring?Cache緩存攔截器(?CacheInterceptor),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-12-12