MyBatis-Plus介绍及Spring Boot 3集成指南

我们每个Java开发者都在使用springboot+mybatis开发时,我们经常发现自己需要为每张数据库表单独编写XML文件,并且为每个表都需要编写一套增删改查的方法,较为繁琐。为了解决这一问题,MyBatis-Plus应运而生。在本文中,我们将介绍MyBatis-Plus的应用以及如何在Spring Boot 3中集成MyBatis。

mybatis-plus.png

什么是MyBatis-Plus?

官方地址:https://baomidou.com/

github地址:https://github.com/baomidou/mybatis-plus

MyBatis-Plus 是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。有以下特性:

  • 无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑
  • 损耗小:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作
  • 强大的 CRUD 操作:内置通用 Mapper、通用 Service,仅仅通过少量配置即可实现单表大部分 CRUD 操作,更有强大的条件构造器,满足各类使用需求
  • 支持 Lambda 形式调用:通过 Lambda 表达式,方便的编写各类查询条件,无需再担心字段写错
  • 支持主键自动生成:支持多达 4 种主键策略(内含分布式唯一 ID 生成器 - Sequence),可自由配置,完美解决主键问题
  • 支持 ActiveRecord 模式:支持 ActiveRecord 形式调用,实体类只需继承 Model 类即可进行强大的 CRUD 操作
  • 支持自定义全局通用操作:支持全局通用方法注入( Write once, use anywhere )
  • 内置代码生成器:采用代码或者 Maven 插件可快速生成 Mapper 、 Model 、 Service 、 Controller 层代码,支持模板引擎,更有超多自定义配置等您来使用
  • 内置分页插件:基于 MyBatis 物理分页,开发者无需关心具体操作,配置好插件之后,写分页等同于普通 List 查询
  • 分页插件支持多种数据库:支持 MySQL、MariaDB、Oracle、DB2、H2、HSQL、SQLite、Postgre、SQLServer 等多种数据库
  • 内置性能分析插件:可输出 SQL 语句以及其执行时间,建议开发测试时启用该功能,能快速揪出慢查询
  • 内置全局拦截插件:提供全表 delete 、 update 操作智能分析阻断,也可自定义拦截规则,预防误操作

其在github目前已经有15.9k star,足以看出大家对其的喜爱。

_20240524205401.jpg

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的版本中会有依赖不兼容的问题。

_20240524211847.jpg

在启动类中配置注解@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>

在测试包下创建 MyBatisPlusGenerator.java,以交互的模式快速且优雅生成你想要的代码。

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) -> {//设置注释信息-作者builder.author(scanner.apply("请输入作者名称?"));//设置swagger注解//builder.enableSwagger();//设置代码生成的路径builder.outputDir(System.getProperty("user.dir")+"/src/main/java");})// 包配置.packageConfig((scanner, builder) -> {builder.parent(scanner.apply("请输入包名?"))//设置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")//设置字段名的命名策略为下划线转驼峰命名.columnNaming(NamingStrategy.underline_to_camel)//主键策略递增.idType(IdType.AUTO).formatFileName("%sEntity").build();}).execute();}
}

运行代码,输入作者,生成代码的包路径,数据库表来生成代码:
_20240524220037.jpg

_20240524220134.jpg

这样,我们就能够快速生成一套代码了。我们只需在生成的代码基础上添加我们的业务处理逻辑即可。

至此,你已经完成了MyBatis-Plus与Spring Boot 3的集成。通过MyBatis-Plus,你可以更加高效地开发数据访问层,减少重复代码的编写,提升系统的开发效率和可维护性。

总结

本文介绍了MyBatis-Plus的基本特性及其与Spring Boot 3的集成步骤。通过使用MyBatis-Plus,开发者可以快速地搭建和开发数据访问层,同时提高代码质量和开发效率。希望本文能对你理解和使用MyBatis-Plus有所帮助。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/14605.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第七节:带你全面理解vue3: 其他响应式进阶API

前言: 针对vue3官网中, 响应式:进阶API 中, 我们在上一章中给大家讲解了shallowRef, shallowReactive, shallowReadonly几个API的使用. 本章主要对剩下的API 进行讲解, 我们先看一下官网中进阶API 都有那些 对于剩下这些API, 你需要了解他们创建目的, 是为了解决之前的API存在…

查看cpu进程数

import multiprocessing from multiprocessing import Pool# 导入 Pool 允许你创建一个进程池 # 进程池是一组工作进程&#xff0c;它们可以并行地执行多个任务# multiprocessing.cpu_count(): 返回当前机器上的CPU核心数 sum_cpu multiprocessing.cpu_count()use_cpu max(1,…

LLM多模态——GPT-4o改变人机交互的多模式 AI 模型应用

1. 概述 OpenAI 发布了迄今为止最新、最先进的语言模型 – GPT-4o也称为“全“ 模型。这一革命性的人工智能系统代表了一次巨大的飞跃&#xff0c;其能力模糊了人类和人工智能之间的界限。 GPT-4o 的核心在于其原生的多模式特性&#xff0c;使其能够无缝处理和生成文本、音频…

AWPortrait1.4更新,人物的生成更加趋近真实感,将SD1.5人像的真实感提升到了一个新的高度

AWPortrait1.4更新&#xff0c;人物的生成更加趋近真实感&#xff0c;将SD1.5人像的真实感提升到了一个新的高度 经过5个月&#xff0c;AWPortrait终于迎来了1.4。 本次更新基于1.3训练&#xff0c;使得人物的生成更加趋近真实感&#xff0c;将SD1.5人像的真实感提升到了一个新…

SpringBoot(七)之监控

SpringBoot&#xff08;七&#xff09;之监控 Spring Boot 提供了丰富的监控和管理功能&#xff0c;可以通过 Spring Boot Actuator 组件实现。Actuator 使你能够监控和管理 Spring Boot 应用程序的各个方面&#xff0c;比如健康检查、指标、环境信息等。以下是如何在 Spring …

EUT上电时,测试LISN拾取的脉冲电压对接收机的影响

背景&#xff1a;在2024年4月25日发现G220 IP20 FSF1测试结果不一致&#xff0c;有5dB差异&#xff0c;经排查&#xff0c;是两台接收机测试出的结果不一致&#xff0c;经过进一步确认&#xff0c;使用信号发生器直接灌入接收机DI-111内&#xff0c;测试出的结果会少4dB.使用梳…

linux-ftp服务器搭建简介

安装ftp服务器&#xff1a; vsftpd全称为“very secure FTP daemon”&#xff0c;是一个在UNIX类操作系统上运行的服务&#xff0c;可以提供高安全性的FTP服务。 vsftpd是一个免费和开放源代码的FTP服务器软件&#xff0c;它提供了许多其他FTP服务器不支持的特性&#xff0c;例…

基于python+Django大数据的电影市场预测分析系统设计与实现

博主介绍&#xff1a; 大家好&#xff0c;本人精通Java、Python、C#、C、C编程语言&#xff0c;同时也熟练掌握微信小程序、Php和Android等技术&#xff0c;能够为大家提供全方位的技术支持和交流。 我有丰富的成品Java、Python、C#毕设项目经验&#xff0c;能够为学生提供各类…

uview1.0 u-form表单回显校验不通过

提交到后端的数据&#xff0c;回显后不做任何修改无法通过表单校验 原因&#xff0c;u-form表单校验的类型默认为string&#xff0c;但是后端返回的是integer类型&#xff0c;导致无法通过校验 解决&#xff0c;既然后端返回的是整数形&#xff0c;那么我们就将校验规则的type…

html 根字号 以及 设置根元素font-size:calc(100vw/18.75)、元素rem实现自适应

rem 单位介绍&#xff1a;rem 是相对文档根元素(html)字体大小的尺寸单位&#xff0c;当元素的尺寸或文字字号等使用 rem 单位时&#xff0c;会随着根元素的 font-size变化而变化。 得出结论&#xff1a;在不同分辨率的设备下动态设置根元素的字体大小就可以实现页面自适应。 …

【企业动态】东胜物联成为AWS硬件合作伙伴,助力实现边缘智能

近日&#xff0c;AIoT硬件设备供应商东胜物联与全球领先的云计算服务提供商亚马逊云&#xff08;AWS&#xff09;达成合作关系&#xff0c;共同致力于推动物联网技术的发展&#xff0c;为企业客户提供更智能、灵活的硬件解决方案&#xff0c;助力智能化升级和数字化转型。 作为…

Android studio关闭自动更新

Windows下&#xff1a; 左上角file - setting - Appearance & Behavier - system setting - update - 取消勾选

图书管理系统(Java版本)

文章目录 前言要求1.设置对象1.1.图书1.2.书架2.管理员3.功能的实现 2.搭建框架2.1.登录(login)2.2.菜单2.3.操作方法的获取 3.操作方法的实现3.1.退出系统(ExitOperation)3.2.显示图书(ShowOperation)3.3.查阅图书(FindOperation)3.4.新增图书(AddOperation)3.5.借出图书(Borr…

现代浏览器性能优化示例-提前加载prefetch:

prefetch就是在核心代码 加载完成后&#xff0c;浏览器有空闲就会帮我们prefetch预取资源 请注意&#xff0c;prefetch 是一种优化手段&#xff0c;而不是必须使用的功能。在决定是否使用它之前&#xff0c;请确保你的应用程序已经进行了其他必要的性能优化&#xff08;如代码压…

《Python学习》-- 入门篇一

一、概述 Python是一门由Guido van Rossum于20世纪80年代末开发的高级编程语言&#xff0c;并在1991年首次发布。它同JAVA一样是一门解释性语言&#xff0c;它的性能不如C、golang等编译型语言&#xff0c;但它具有入门门槛低、开发效率高等优点。2008年发布了Python3.0的版本&…

链游:区块链技术的游戏新纪元

随着区块链技术的快速发展&#xff0c;越来越多的行业开始探索与其结合的可能性&#xff0c;其中&#xff0c;游戏行业与区块链的结合尤为引人注目。链游&#xff0c;即基于区块链技术的游戏&#xff0c;正以其独特的优势&#xff0c;为玩家带来全新的游戏体验。本文将对链游进…

QQ技术导航源码附带交易系统

网站功能 QQ登录 友联自助交换 友情链接交易功能 多功能搜索 ico小图标本地化 网站图片本地化 蜘蛛日志 文章评论 网站评论 自助链接匿名提交站点&#xff0c;添加友链访问网站自动审核通过 VIP 会员等级 VIP 付费升级 单个文章或者站点付费快审 多背景图片可自定义背景图片…

c语言bug汇总中篇5

40. 不关注代码风格一致性 代码风格一致性有助于提高代码的可读性和可维护性。如果团队成员使用不同的代码风格&#xff0c;会导致代码看起来杂乱无章&#xff0c;增加阅读和理解的成本。 为了保持代码风格的一致性&#xff0c;程序员应该&#xff1a; - 遵循团队或项目约定的…

200smart【编程入门】

说明 编程时&#xff0c;遇到困难就按【F1】 【I】输入 200smart 上限 i0.0~i31.7 255bit【255个输入点】 i0.0~i31.7 八进制 【布尔 bool 】 ib0~ib127 【单字节】 8bit iw0~iw127 …

【FAQ】HarmonyOS SDK 闭源开放能力 —Map Kit(2)

1.问题描述&#xff1a; 能否设置点击地图&#xff0c;地图标记上的文字不消失&#xff1f; 解决方案&#xff1a; 你好&#xff0c;这个功能设计本身就是点击屏幕marker的信息窗消失&#xff1b;如果用户只是想信息窗中的文字一直展示&#xff0c;可以不用信息窗实现 &…