一文吃透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性能测试九、总结(尾部小惊喜)前言 所谓接口࿰…...
内存分配函数malloc kmalloc vmalloc
内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...
Leetcode 3577. Count the Number of Computer Unlocking Permutations
Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接:3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯,要想要能够将所有的电脑解锁&#x…...

HTML 列表、表格、表单
1 列表标签 作用:布局内容排列整齐的区域 列表分类:无序列表、有序列表、定义列表。 例如: 1.1 无序列表 标签:ul 嵌套 li,ul是无序列表,li是列表条目。 注意事项: ul 标签里面只能包裹 li…...
镜像里切换为普通用户
如果你登录远程虚拟机默认就是 root 用户,但你不希望用 root 权限运行 ns-3(这是对的,ns3 工具会拒绝 root),你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案:创建非 roo…...
css的定位(position)详解:相对定位 绝对定位 固定定位
在 CSS 中,元素的定位通过 position 属性控制,共有 5 种定位模式:static(静态定位)、relative(相对定位)、absolute(绝对定位)、fixed(固定定位)和…...
CRMEB 框架中 PHP 上传扩展开发:涵盖本地上传及阿里云 OSS、腾讯云 COS、七牛云
目前已有本地上传、阿里云OSS上传、腾讯云COS上传、七牛云上传扩展 扩展入口文件 文件目录 crmeb\services\upload\Upload.php namespace crmeb\services\upload;use crmeb\basic\BaseManager; use think\facade\Config;/*** Class Upload* package crmeb\services\upload* …...
是否存在路径(FIFOBB算法)
题目描述 一个具有 n 个顶点e条边的无向图,该图顶点的编号依次为0到n-1且不存在顶点与自身相连的边。请使用FIFOBB算法编写程序,确定是否存在从顶点 source到顶点 destination的路径。 输入 第一行两个整数,分别表示n 和 e 的值(1…...
laravel8+vue3.0+element-plus搭建方法
创建 laravel8 项目 composer create-project --prefer-dist laravel/laravel laravel8 8.* 安装 laravel/ui composer require laravel/ui 修改 package.json 文件 "devDependencies": {"vue/compiler-sfc": "^3.0.7","axios": …...

【分享】推荐一些办公小工具
1、PDF 在线转换 https://smallpdf.com/cn/pdf-tools 推荐理由:大部分的转换软件需要收费,要么功能不齐全,而开会员又用不了几次浪费钱,借用别人的又不安全。 这个网站它不需要登录或下载安装。而且提供的免费功能就能满足日常…...
Webpack性能优化:构建速度与体积优化策略
一、构建速度优化 1、升级Webpack和Node.js 优化效果:Webpack 4比Webpack 3构建时间降低60%-98%。原因: V8引擎优化(for of替代forEach、Map/Set替代Object)。默认使用更快的md4哈希算法。AST直接从Loa…...