一文吃透SpringBoot整合mybatis-plus(保姆式教程)

✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。
🍎个人主页:Java Fans的博客
🍊个人信条:不迁怒,不贰过。小知识,大智慧。
💞当前专栏:SpringBoot 框架从入门到精通
✨特色专栏:国学周更-心性养成之路
🥭本文内容:一文吃透SpringBoot整合mybatis-plus(保姆式教程)
文章目录
- 手动整合 mybatis-plus 详解
- 1、引入依赖
- 2、创建基本目录结构
- 3、配置 application.yml
- 4、在 entity 包下创建实体类
- 5、创建 Mapper 接口
- 6、创建 Mapper.xml 文件
- 7、创建 Service 接口
- 8、创建 ServiceImpl 实现类
- 9、创建 Controller 控制类
- 10、测试
- 自动整合 mybatis-plus 详解
- 1、引入依赖
- 2、配置 application.yml
- 3、自动整合配置
- 【1】IDEA 连接 数据库
- 【2】添加数据库到IDEA中
- 【3】选择数据表进行自动创建
- 4、手动创建 Controller 层和测试

首先创建一个 SpringBoot 项目,具体创建步骤可以参见我的上一篇博文:SpringBoot 项目的创建与启动。
手动整合 mybatis-plus 详解
1、引入依赖
在 pom.xml 文件中添加相关依赖,代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.5.12</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>cn.kgc</groupId><artifactId>springboot04</artifactId><version>0.0.1-SNAPSHOT</version><name>springboot04</name><description>springboot04</description><properties><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><!--引入mybatis-plus依赖--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.1</version></dependency><!--引入mysql依赖--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency><!--引入druid连接池依赖--><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.2.9</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build>
</project>
2、创建基本目录结构
在新创建的springboot项目中的cn.kgc.springboot04包下创建如下图所示的目录结构,再在resources目录下创建mapper目录。

3、配置 application.yml
将下图中 application.properties 文件改为 application.yml 风格的文件


在application.yml文件中添加相关配置,配置代码如下:
server:port: 8888
spring:#配置数据源datasource:driver-class-name: com.mysql.jdbc.Drivertype: com.alibaba.druid.pool.DruidDataSourceurl: jdbc:mysql:///java2218?serverTimezone=UTC&useSSL=false&characterEncoding=UTF-8username: rootpassword: huanghuang
#配置mybatis-plus
mybatis-plus:configuration:log-impl: org.apache.ibatis.logging.stdout.StdOutImplmap-underscore-to-camel-case: truetype-aliases-package: cn.kgc.springboot04.entitymapper-locations: classpath:mapper/*.xml
4、在 entity 包下创建实体类
创建一个实体类 Admin,代码如下:
package cn.kgc.springboot04.entity;import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.experimental.Accessors;@Data
@TableName("admin")
@Accessors(chain = true)
public class Admin {@TableId(type = IdType.AUTO)private long adminId;@TableField("adminName")private String adminName;private long adminPassword;@TableField(exist = false)private String sex;
}
@TableName(“admin”):指定实体类对应数据库中表的名字,Admin类默认对应的表名为admin,当类名不为Admin时,添加此注解可解决此问题。
@Accessors(chain = true) :通过链式调用完成对象创建;如:Admin admin = new Admin().setAdminName(“小明”).setAdminPassword(123456);
@TableId(type = IdType.AUTO) :指定主键自增策略,如果数据库为给主键添加自增属性,通过此注解可以添加自增功能。
@TableField(“adminName”):当实体类的属性名与数据库的字段名不一致时,使用此注解可以指定属性名对应数据库中的哪个字段对应。
@TableField(exist = false):指定当前属性在数据库中不存在对应的字段 忽略该字段的操作。
5、创建 Mapper 接口
创建 AdminMapper 接口,使其继承 BaseMapper 类实现ORM操作,代码如下:
package cn.kgc.springboot04.mapper;import cn.kgc.springboot04.entity.Admin;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;public interface AdminMapper extends BaseMapper<Admin> {
}
其中,BaseMapper提供了常用的CRUD、分页、批量操作等方法。
6、创建 Mapper.xml 文件
创建 AdminMapper.xml 文件,使其的 namespace 为 AdminMapper 接口的路径地址,代码如下:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.kgc.springboot04.mapper.AdminMapper"></mapper>
7、创建 Service 接口
创建 AdminService 接口,使其继承 IService 类,代码如下:
package cn.kgc.springboot04.service;import cn.kgc.springboot04.entity.Admin;
import com.baomidou.mybatisplus.extension.service.IService;public interface AdminService extends IService<Admin> {
}
8、创建 ServiceImpl 实现类
创建 AdminServiceImpl 实现类,使其继承 ServiceImpl 类以及继承 AdminService 接口,代码如下:
package cn.kgc.springboot04.service.impl;import cn.kgc.springboot04.entity.Admin;
import cn.kgc.springboot04.mapper.AdminMapper;
import cn.kgc.springboot04.service.AdminService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;@Service
public class AdminServiceImpl extends ServiceImpl<AdminMapper, Admin> implements AdminService {
}
9、创建 Controller 控制类
创建 AdminController 控制类,代码如下:
package cn.kgc.springboot04.controller;import cn.kgc.springboot04.entity.Admin;
import cn.kgc.springboot04.service.AdminService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.List;@RestController
@RequestMapping("admin")
public class AdminController {@AutowiredAdminService adminService;//查询所有管理员@RequestMapping("list")public List<Admin> getList(){return adminService.list();}//增加或者修改一条数据@RequestMapping("savaOrUpdate")public String insertOne(Admin admin){boolean save = adminService.saveOrUpdate(admin);return ""+save;}//删除一条数据@RequestMapping("delete")public String deleteOne(Integer id){boolean b = adminService.removeById(id);return ""+b;}
}
10、测试
下面,我们就一一测试不同接口的运行效果吧!
【1】查询所有数据:在浏览器输入(http://localhost:8888/admin/list )
测试结果如下:

【2】插入一条数据:在浏览器输入(http://localhost:8888/admin/savaOrUpdate?adminname=赵敏&adminpassword=123456)
测试结果如下:

添加数据后,数据库数据显示如下:

【3】修改一条数据:在浏览器输入(http://localhost:8888/admin/savaOrUpdate?adminname=赵敏&adminpassword=888888&adminid=1006)
测试结果如下:

修改数据后,数据库数据显示如下:

【4】删除一条数据:在浏览器输入(http://localhost:8888/admin/delete?id=1006)
测试结果如下:

如下图,删除数据后,数据库的这条记录便不存在了。

自动整合 mybatis-plus 详解
1、引入依赖
在 pom.xml 文件中添加相关依赖,代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.5.12</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>cn.kgc</groupId><artifactId>springboot05</artifactId><version>0.0.1-SNAPSHOT</version><name>springboot05</name><description>springboot05</description><properties><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><!--引入mybatis-plus依赖--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.1</version></dependency><!--引入mysql依赖--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency><!--引入druid连接池依赖--><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.2.9</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build>
</project>
2、配置 application.yml
将下图中 application.properties 文件改为 application.yml 风格的文件


在application.yml文件中添加相关配置,配置代码如下:
server:port: 9999
spring:#配置数据源datasource:driver-class-name: com.mysql.jdbc.Drivertype: com.alibaba.druid.pool.DruidDataSourceurl: jdbc:mysql:///java2218?serverTimezone=UTC&useSSL=false&characterEncoding=UTF-8username: rootpassword: huanghuang
#配置mybatis-plus
mybatis-plus:configuration:log-impl: org.apache.ibatis.logging.stdout.StdOutImplmap-underscore-to-camel-case: truetype-aliases-package: cn.kgc.springboot04.entitymapper-locations: classpath:mapper/*.xml
3、自动整合配置
【1】IDEA 连接 数据库
如下图,打开IDEA 右侧工具栏的 Database ,点击+按钮,选择 Data Source后,选择你使用的数据库类型,我这边使用的是MySQL,所以我选择MySQL,然后进入下一步;

【2】添加数据库到IDEA中
按照下图所示,填入数据库用户名和密码,然后填写需要添加的数据库名称,点击 Apply 和 OK 后,进入下一步。

如果java2218数据库中没有数据,可以点击此处的刷新按钮即可。

【3】选择数据表进行自动创建
第一步:如下图,选择你需要自动创建的表,可以选择多个表,然后右击选择 MybatisX-Generator,进入下一步;

第二步:如下图配置 module path、base package 和 relative package,然后进入下一步;

第三步:如下图配置,选择你安装的 MyBatis-Plus 版本,我安装的是 MyBatis-Plus 3版本,因此选择此项,然后选择 Lombok ,点击 Finish 完成创建

点击完成后,自动生成的文件目录如下图所示:

由图可知,通过次步操作,我们已经自动创建了entity层、 mapper 层和 service 层,大大提高了我们编写的效率。
4、手动创建 Controller 层和测试
Controller 层的业务和测试如 【手动整合 mybatis-plus 详解】中的第9、10步一样。
码文不易,本篇文章就介绍到这里,如果想要学习更多Java系列知识,点击关注博主,博主带你零基础学习Java知识。与此同时,对于日常生活有困扰的朋友,欢迎阅读我的第四栏目:《国学周更—心性养成之路》,学习技术的同时,我们也注重了心性的养成。

相关文章:
一文吃透SpringBoot整合mybatis-plus(保姆式教程)
✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…...
C++ primer plus(第六版)编程练习答案 第4章 复合类型
一、程序清单 arrayone.cpp // arrayone.cpp -- small arrays of integers #include <iostream> int main() {using namespace std;int yams[3]; // creates array with three elementsyams[0] = 7; // assign value to first elementyams[1] = 8;yams[2] = 6;i…...
Kafka源码分析之Producer(一)
总览 根据kafka的3.1.0的源码example模块进行分析,如下图所示,一般实例代码就是我们分析源码的入口。 可以将produce的发送主要流程概述如下: 拦截器对发送的消息拦截处理; 获取元数据信息; 序列化处理;…...
springboot校友社交系统
050-springboot校友社交系统演示录像开发语言:Java 框架:springboot JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7(一定要5.7版本) 数据库工具:Navicat11 开发软件:e…...
python flask项目部署
flask上传服务器pyhon安装下载Anacondasudo wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-5.3.1-Linux-x86_64.sh可根据需要安装对应的版本https://repo.anaconda.com/archive/解压anaconda压缩包bash Anaconda3-5.3.1-Linux-x86_64.sh解压过程中会…...
常见排序算法(C语言实现)
文章目录排序介绍插入排序直接插入排序希尔排序选择排序选择排序堆排序交换排序冒泡排序快速排序递归实现Hoare版本挖坑法前后指针版本非递归实现Hoare版本挖坑法前后指针版本快排的优化三值取中小区间优化归并排序递归实现非递归实现计数排序排序算法复杂度及稳定性分析不同算…...
基于jsp+ssm+springboot的小区物业管理系统【设计+论文+源码】
摘 要随着科学技术的飞速发展,各行各业都在努力与现代先进技术接轨,通过科技手段提高自身的优势;对于小区物业管理系统当然也不能排除在外,随着网络技术的不断成熟,带动了小区物业管理系统,它彻底改变了过去…...
Elasticsearch 学习+SpringBoot实战教程(三)
需要学习基础的可参照这两文章 Elasticsearch 学习SpringBoot实战教程(一) Elasticsearch 学习SpringBoot实战教程(一)_桂亭亭的博客-CSDN博客 Elasticsearch 学习SpringBoot实战教程(二) Elasticsearch …...
try-with-resource
try-with-resource是Java 7中引入的新特性,它可以方便地管理资源,自动关闭资源,从而避免了资源泄漏的问题。 作用 使用try-with-resource语句可以简化代码,避免了手动关闭资源的繁琐操作,同时还可以保证资源的正确关闭…...
leetcode148_排序链表的3种解法
1. 题目2. 解答 2.1. 解法12.2. 解法22.3. 解法3 1. 题目 给你链表的头结点head,请将其按升序排列并返回排序后的链表。 /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullp…...
使用stm32实现电机的PID控制
使用stm32实现电机的PID控制 PID控制应该算是非常古老而且应用非常广泛的控制算法了,小到热水壶温度控制,大到控制无人机的飞行姿态和飞行速度等等。在电机控制中,PID算法用的尤为常见。 文章目录使用stm32实现电机的PID控制一、位置式PID1.计…...
数学原理—嵌入矩阵
目录 1.嵌入矩阵的基本作用 2.嵌入矩阵的数学解释 3.嵌入矩阵在联合分布适应中的数学推导主要包括以下几个步骤 4.在JDA中,怎么得到嵌入矩阵 5.联合分布自适应中如何得到嵌入矩阵 (另一种解释) 1.嵌入矩阵的基本作用 在机器学习中&a…...
English Learning - L2 语音作业打卡 辅音翘舌音 [ʃ] [ʒ] 空气摩擦音 [h] Day31 2023.3.23 周四
English Learning - L2 语音作业打卡 辅音翘舌音 [ʃ] [ʒ] 空气摩擦音 [h] Day31 2023.3.23 周四💌发音小贴士:💌当日目标音发音规则/技巧:翘舌音 [ʃ] [ʒ]空气摩擦音 [h]🍭 Part 1【热身练习】🍭 Part2【练习内容】…...
记录springboot+vue+fastdfs实现简易的文件(上传、下载、删除、预览)操作
前言说明:springboot vue FastDFS实现文件上传(支持预览)升级版 FASTDFS部分 FASTDFS安装过程:基于centos 7安装FastDFS文件服务器 SpringBoot部分 springboot源码实现 package com.core.doc.controller;import com.baomid…...
Java中循环使用Stream应用场景
在JAVA中,涉及到对数组、Collection等集合类中的元素进行操作的时候,通常会通过循环的方式进行逐个处理,或者使用Stream的方式进行处理。例如,现在有这么一个需求:从给定句子中返回单词长度大于5的单词列表,…...
中国蚁剑AntSword实战
中国蚁剑AntSword实战1.基本使用方法2.绕过安全狗连接3.请求包修改UA特征伪造RSA流量加密4.插件使用1.基本使用方法 打开蚂蚁宝剑,右键添加数据: 输入已经上传马的路径和连接密码: 测试连接,连接成功! GetShell了&…...
C++ 直接初始化和拷贝初始化
首先我们介绍直接初始化:编译器使用普通的函数匹配来选择与我们提供的参数最匹配的构造函数。文字描述可能会让你们云里雾里,那我们直接看代码: //先设计这样的一个类 class A{ public:A(){ cout << "A()" << endl; }A…...
数据迁移工具
1.Kettle Kettle是一款国外开源的ETL工具,纯Java编写,绿色无需安装,数据抽取高效稳定 (数据迁移工具)。 Kettle 中有两种脚本文件,transformation 和 job,transformation 完成针对数据的基础转换,job 则完成整个工作流的控制。 Kettle 中文名称叫水壶,该项目的主程序…...
【C/C++】程序的内存开辟
在C/C语言中,不同的类型开辟的空间区域都是不一样的. 这节我们就简单了解下开辟不同的类型内存所存放的区域在哪里. 文章目录栈区(stack)堆区(heap)数据段(静态区)常量存储区内存开辟布局图栈区…...
全网最完整,接口测试总结彻底打通接口自动化大门,看这篇就够了......
目录:导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜)前言 所谓接口࿰…...
Python爬虫实战:研究MechanicalSoup库相关技术
一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...
观成科技:隐蔽隧道工具Ligolo-ng加密流量分析
1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具,该工具基于TUN接口实现其功能,利用反向TCP/TLS连接建立一条隐蔽的通信信道,支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式,适应复杂网…...
大数据学习栈记——Neo4j的安装与使用
本文介绍图数据库Neofj的安装与使用,操作系统:Ubuntu24.04,Neofj版本:2025.04.0。 Apt安装 Neofj可以进行官网安装:Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...
java 实现excel文件转pdf | 无水印 | 无限制
文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...
转转集团旗下首家二手多品类循环仓店“超级转转”开业
6月9日,国内领先的循环经济企业转转集团旗下首家二手多品类循环仓店“超级转转”正式开业。 转转集团创始人兼CEO黄炜、转转循环时尚发起人朱珠、转转集团COO兼红布林CEO胡伟琨、王府井集团副总裁祝捷等出席了开业剪彩仪式。 据「TMT星球」了解,“超级…...
【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)
升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点,但无自动故障转移能力,Master宕机后需人工切换,期间消息可能无法读取。Slave仅存储数据,无法主动升级为Master响应请求ÿ…...
Redis数据倾斜问题解决
Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中,部分节点存储的数据量或访问量远高于其他节点,导致这些节点负载过高,影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...
Linux --进程控制
本文从以下五个方面来初步认识进程控制: 目录 进程创建 进程终止 进程等待 进程替换 模拟实现一个微型shell 进程创建 在Linux系统中我们可以在一个进程使用系统调用fork()来创建子进程,创建出来的进程就是子进程,原来的进程为父进程。…...
关键领域软件测试的突围之路:如何破解安全与效率的平衡难题
在数字化浪潮席卷全球的今天,软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件,这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下,实现高效测试与快速迭代?这一命题正考验着…...
JS设计模式(4):观察者模式
JS设计模式(4):观察者模式 一、引入 在开发中,我们经常会遇到这样的场景:一个对象的状态变化需要自动通知其他对象,比如: 电商平台中,商品库存变化时需要通知所有订阅该商品的用户;新闻网站中࿰…...
