一文吃透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.Driver
    type: com.alibaba.druid.pool.DruidDataSource
    url: jdbc:mysql:///java2218?serverTimezone=UTC&useSSL=false&characterEncoding=UTF-8
    username: root
    password: huanghuang
#配置mybatis-plus
mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
    map-underscore-to-camel-case: true
  type-aliases-package: cn.kgc.springboot04.entity
  mapper-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 mapper
        PUBLIC "-//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 {

    @Autowired
    AdminService 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.Driver
    type: com.alibaba.druid.pool.DruidDataSource
    url: jdbc:mysql:///java2218?serverTimezone=UTC&useSSL=false&characterEncoding=UTF-8
    username: root
    password: huanghuang
#配置mybatis-plus
mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
    map-underscore-to-camel-case: true
  type-aliases-package: cn.kgc.springboot04.entity
  mapper-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知识。与此同时,对于日常生活有困扰的朋友,欢迎阅读我的第四栏目:《国学周更—心性养成之路》,学习技术的同时,我们也注重了心性的养成。

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

23.3.26总结

康托展开 是一个全排列与自然数的映射关系&#xff0c;康托展开的实质是计算当前序列在所有从小到大的全排列中的顺序&#xff0c;跟其逆序数有关。 例如&#xff1a;对于 1,2,3,4,5 来说&#xff0c;它的康托展开值为 0*4&#xff01;0*3&#xff01;0*2&#xff01;0*1&…

Android 之 打开相机 打开相册

Android 之 打开系统摄像头拍照 打开系统相册&#xff0c;并展示1&#xff0c;清单文件 AndroidManifest.xml<uses-permission android:name"android.permission.INTERNET" /><!--文件读取权限--><uses-permission android:name"android.permiss…

网络编程2(套接字编程)

套接字编程UDP协议通信&#xff1a;TCP通信&#xff1a;套接字编程&#xff1a;如何编写一个网络通信程序 1.网络通信的数据中都会包含一个完整的五元组&#xff1a; sip&#xff0c;sport&#xff0c;dip&#xff0c;dport&#xff0c;protocol&#xff08;源IP&#xff0c;源…

【linux】多线程控制详述

文章目录一、进程控制1.1 POSIX线程库1.2 创建线程pthread_create1.2.1 创建一批线程1.3 终止线程pthread_exit1.4 线程等待pthread_jion1.4.1 线程的返回值&#xff08;退出码&#xff09;1.5 取消线程pthread_cancel1.6 C多线程1.7 分离线程pthread_detach二、线程ID值三、线…

C/C++内存管理

内存管理在C中无处不在&#xff0c;内存泄漏几乎在每个C程序中都会发生。因此&#xff0c;要学好C&#xff0c;内存管理这一关势在必得&#xff01; 目录 1.C/C内存分布 2.C语言中动态内存管理方式 3.C内存管理方式 3.1.new和delete操作内置类型 3.2.new和delete操作自定义类型…

SQL注入之HTTP请求头注入

Ps&#xff1a; 先做实验&#xff0c;在有操作的基础上理解原理会更清晰更深入。 一、实验 sqli-lab 1. User-Agent注入 特点&#xff1a;登陆后返回用户的 User-Agent --> 服务器端可能记录用户User-Agent 输入不合法数据报错 payload: and updatexml(1,concat("~&…

异或相关算法

文章目录1. 异或的性质2. 题目一3. 题目二4. 题目三5. 题目四1. 异或的性质 我们知道&#xff0c;异或的定义是&#xff1a;相同为0&#xff0c;相异为1。所以也被称为无进位相加&#xff0c;根据这定义&#xff0c;我们可以得出三个性质&#xff1a; 1. N ^ N0。2. N ^ 0N。3…

13-C++面向对象(纯虚函数(抽象类)、多继承、多继承-虚函数、菱形继承、虚继承、静态成员)

虚析构函数 存在父类指针指向子类对象的情况&#xff0c;应该将析构函数声明为虚函数&#xff08;虚析构函数&#xff09; 纯虚函数 纯虚函数&#xff1a;没有函数体且初始化为0的虚函数&#xff0c;用来定义接口规范 抽象类&#xff1a; 含有纯虚函数的类&#xff0c;不可以实…

Prometheus监控实战系列十七:探针监控

目前对于应用程序的监控主要有两种方式&#xff0c;一种被称为白盒监控&#xff0c;它通过获取目标的内部信息指标&#xff0c;来监控目标的状态情况&#xff0c;我们前面介绍的主机监控、容器监控都属于此类监控。另一种则是“黑盒监控”&#xff0c;它指在程序外部通过探针的…

【Linux】Linux下权限的理解

前言&#xff1a;在之前我们已经对基本的指令进行了深入的学习&#xff0c;接下来我将带领大家学习的是关于权限的相关问题。在之前&#xff0c;我们一直是使用的【root】用户&#xff0c;即为“超级用户”&#xff0c;通过对权限的学习之后&#xff0c;我们就会慢慢的切换到普…

【数据结构】双向链表实现

Yan-英杰的主页 悟已往之不谏 知来者之可追 C程序员&#xff0c;2024届电子信息研究生 目录 一、什么是双向链表 二、双向链表的实现 一、什么是双向链表 双向链表也叫双链表&#xff0c;是链表的一种&#xff0c;它的每个数据节点中都有两个指针&#xff0c;分别指向直接后…

【数据结构初阶】单链表

目录一、思路>>>>>>>>>>>>过程<<<<<<<<<<<<<<<1.打印2.尾插3.尾删4.头插5.头删6.查找7.指定位置后插入8.指定位置后删除9.链表的销毁二、整个程序1.SLTlist.c2.SLTlist.c一、思路 #define …

点云可视化:使用open3d实现点云连续播放

模型训练完成后除了看ap等定量的指标是否变好外,还需要将结果可视化出来,直接观察模型的输出结果,往往我们的数据会比较多,如果单帧的看的话会比较麻烦,需要频繁的关闭窗口,最好是能直接连续的播放数据和模型的推理结果。有三种方法: clear_geomotry()和update_render()…

SpringBoot 解决id使用字符串类型可以解决精度问题

1. 问题引入 当主键超过19位长度的数值型的属性值后三位会被四舍五入 2. 使用雪花算法解决 雪花算法长度最大只有19位的10进制&#xff0c;所以不会丢失精度问题&#xff01;SpringBoot 解决主键雪花算法配置https://liush.blog.csdn.net/article/details/129779627 ① appli…

Linux的基础知识

根目录和家目录根目录&#xff1a;是Linux中最底层的目录&#xff0c;用"/"表示家目录&#xff1a;当前用户所在的路径&#xff0c;用“~”表示&#xff0c;root用户的家目录和普通用户的家目录不一样&#xff0c;普通用户的家目录在/home路径下&#xff0c;每一个用…

eNSP 网络地址转换配置实验

关于本实验当使用私有IP地址的内部主机访问外网时&#xff0c;需要使用NAT将其私有IP地址转换为公有IP地址&#xff0c;此时需要在网关路由器上配置NAT来提供相应的地址转换服务。当网关路由器连接ISP的接口上未使用固定IP地址&#xff0c;而是动态地从ISP获取IP地址时&#xf…

沁恒CH32V307使用记录:SPI基础使用

文章目录目的基础说明使用演示其它补充总结目的 SPI是单片机中比较常用的一个功能。这篇文章将对CH32V307中相关内容进行说明。 本文使用沁恒官方的开发板 &#xff08;CH32V307-EVT-R1沁恒RISC-V模块MCU赤兔评估板&#xff09; 进行演示。 基础说明 SPI的基础概念见下面文…

【Docker】之docker-compose的介绍与命令的使用

&#x1f341;博主简介 &#x1f3c5;云计算领域优质创作者   &#x1f3c5;华为云开发者社区专家博主   &#x1f3c5;阿里云开发者社区专家博主 &#x1f48a;交流社区&#xff1a;运维交流社区 欢迎大家的加入&#xff01; 文章目录docker-compose简介docker-compose基础…

C++中的list类【详细分析及模拟实现】

list类 目录list类一、list的介绍及使用1、构造器及其它重点①遍历②插入删除操作③insert和erase④resize2、Operations接口①remove②sort③merge3、vector与list排序性能比较二、list的深度剖析及模拟实现1、结点的定义2、创建list类3、list类方法的实现3.1 迭代器类的实现*…

【机器学习面试总结】————特征工程

【机器学习面试总结】————特征工程一、特征归一化为什么需要对数值类型的特征做归一化?二、类别型特征在对数据进行预处理时,应该怎样处理类别型特征?三、高维组合特征的处理什么是组合特征?如何处理高维组合特征?四、组合特征怎样有效地找到组合特征?五、文本表示模型…