SpringBoot 项目整合 MyBatisPlus 框架,附带测试示例

news2024/11/17 8:43:31

文章目录

    • 一、创建 SpringBoot 项目
    • 二、添加 MyBatisPlus 依赖
    • 三、项目结构和数据库表结构
    • 四、项目代码
      • 1、application.yml
      • 2、TestController
      • 3、TbUser
      • 4、TbUserMapper
      • 5、TestServiceImpl
      • 6、TestService
      • 7、TestApplication
      • 8、TbUserMapper.xml
      • 9、MyBatisPlusTest
    • 五、浏览器测试结果
    • 六、Junit 测试结果
    • 七、完整 pom.xml 文件

如果对于 MyBatisPlus 的常见基础知识不了解,可以点击 MyBatisPlus 基础原理、常见注解和注意事项简介

如果不清楚如何使用 SpringBoot 整合 MyBatis 框架,可以点击超详细的SpringBoot项目整合MyBatis框架步骤示例,并附带浏览器和Junit测试结果示例代码

一、创建 SpringBoot 项目

本文采用 idea 创建简单的 maven 项目, JDK 版本为1.8。

在这里插入图片描述

二、添加 MyBatisPlus 依赖

依赖项中的都很重要,包括 MyBatisPlusMySQL 的依赖,还有 SpringBoot 项目的起步依赖,以及对实体类非常有用的 lombok 依赖。

<parent>
	<artifactId>spring-boot-starter-parent</artifactId>
	<groupId>org.springframework.boot</groupId>
	<version>2.7.10</version>
</parent>

<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>
	</dependency>
	<dependency>
		<groupId>junit</groupId>
		<artifactId>junit</artifactId>
		<scope>test</scope>
	</dependency>
	<dependency>
		<groupId>org.projectlombok</groupId>
		<artifactId>lombok</artifactId>
		<version>1.16.18</version>
	</dependency>
	<dependency>
		<groupId>com.baomidou</groupId>
		<artifactId>mybatis-plus-boot-starter</artifactId>
		<version>3.5.3.1</version>
	</dependency>
	<dependency>
		<groupId>mysql</groupId>
		<artifactId>mysql-connector-java</artifactId>
		<version>5.1.38</version>
	</dependency>
</dependencies>

三、项目结构和数据库表结构

该项目整体结构如下:

MyBatisPlus 结构
数据库表结构如下:
在这里插入图片描述

四、项目代码

1、application.yml

本文使用 yml 的配置文件,配置文件中按层级配置好数据库的信息,项目启动时,会自动根据配置信息连接到数据库。注:要保证数据库是启动状态的。mybatis-plus 这个配置如果是自定义 mapper 文件夹路径的需要进行配置。

spring:
  datasource:
    url: jdbc:mysql://10.100.5.174:8888/test?allowMultiQueries=true&amp;useUnicode=true&amp;characterEncoding=UTF-8&amp;zeroDateTimeBehavior=convertToNull
    driver-class-name: com.mysql.jdbc.Driver
    username: root
    password: 各位大佬点点赞
    
mybatis-plus:
  mapper-locations: classpath:mybatis-mapper/*.xml

2、TestController

这里没啥好说的,如果不清楚,说明基础没有学通。

@RestController
public class Controller {

    @Autowired
    private TestService testService;

    @GetMapping("/select")
    public TbUser selectById(@Param("id") int id ){
        return testService.selectById(id);
    }
}

3、TbUser

实体类,一般来说,要与数据库中的表对应上,这里使用了 @TableName @TableId @TableFieldMyBatisPlus 中的注解进行对应。

@Data
@AllArgsConstructor
@NoArgsConstructor
@TableName("tb_user")
public class TbUser {

    @TableId(type = IdType.AUTO)
    private int id;

    @TableField("username") // 字段名和属性名相同是不用写的
    private String username;

    private String password;
}

4、TbUserMapper

@Mapper
public interface TbUserMapper extends BaseMapper<TbUser> {

    // 这里的BaseMapper是一个MyBatisPlus中提供的超类
    // 这个类里面附带了增删改查等一系列的常用方法
    // TbUserMapper中一些常见的操作就可以直接继承过来进行使用

}

5、TestServiceImpl

@Service
public class TestServiceImpl implements TestService {

    @Autowired
    private TbUserMapper tbUserMapper;

    @Override
    public TbUser selectById(int id) {
        return tbUserMapper.selectById(id);
    }
}

6、TestService

public interface Service {

    TbUser selectById(int id);

}

7、TestApplication

@MapperScan("com.wen.mapper")
@SpringBootApplication
public class TestApplication {

    public static void main(String[] args) {
        SpringApplication.run(TestApplication.class);
    }
}

8、TbUserMapper.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.wen.mapper.TbUserMapper">

</mapper>

9、MyBatisPlusTest

用于 Junit 测试使用,这里要注意,因为需要连接数据库,所以要先启动 SpringBoot 项目,所以要添加以下两个注解。

  • @RunWith(SpringRunner.class)
    • 因为 SpringRunner.class 继承了 SpringJUnit4ClassRunner.class 且没有进行任何修改。
    • 所以 @RunWith(SpringRunner.class) 基本等同于 `@RunWith(SpringJUnit4ClassRunner.class)`` 。
    • 作用是让测试在 Spring 容器环境下执行。
    • 如果测试类中无此注解,将导致 servicedao 等自动注入失败。
  • @SpringBootTest(classes = TestApplication.class)
    • 确保注解的主类(通常是包含 main 方法的类)在测试类的同一包中或者其子包中。
    • @SpringBootTest 默认会从当前包中查找主类。
@RunWith(SpringRunner.class)
@SpringBootTest(classes = TestApplication.class)
public class MyBatisPlusTest {

    @Autowired
    private TbUserMapper tbUserMapper;

    @Test
    public void selectTbUser(){
        TbUser tbUser = tbUserMapper.selectById(1);
        System.out.println(tbUser.toString());
    }
}

五、浏览器测试结果

启动 TestApplication ,也就是启动 SpringBoot 项目,起步依赖会自动识别项目 application.yml 文件中的数据库配置信息,连接数据库,根据 controller 中的访问路径添加参数,就可以做到对数据库的增删改查。

如图所示,在浏览器上访问 localhost:8080/select?id=1 ,目的是查询 ID 为 1 的 TbUser 信息。

浏览器测试结果

六、Junit 测试结果

运行 selectTbUser() 方法,会出现以下结果。

junit测试结果

七、完整 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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.wen</groupId>
    <artifactId>springboot-mybatis-plus</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <parent>
        <artifactId>spring-boot-starter-parent</artifactId>
        <groupId>org.springframework.boot</groupId>
        <version>2.7.10</version>
    </parent>

    <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>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.16.18</version>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.5.3.1</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.38</version>
        </dependency>
    </dependencies>
</project>

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

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

相关文章

云服务出现故障这样处理

无法连接云服务器 服务器远程无法连接时&#xff0c;可通过7ECloud控制台进行连接。 常见故障现象 1、ping不通 2、ping丢包 3、部分端口telnet不通 4、全部端口telnet不通 5、广告、弹窗植入 6、域名无法访问IP访问正常 常见故障原因 1、云服务器过期、关机或者EIP被…

【技巧】ArcgisPro 字段计算器内置函数方法的调用

在arcgisPro中&#xff0c;内置了常用的几种函数方法&#xff0c;如顺序编号&#xff0c;重分类等&#xff1b;调用方法如下&#xff1a;

YOLOv3分析

参考链接&#xff1a;霹雳吧啦b站 主要参考了b站霹雳吧啦的视频《深度学习目标检测篇》。 目录 前言YOLOv3网络结构 YOLOv3 SPP 前言 YOLOv3的精度虽然已经过时&#xff0c;但思想仍旧值得学习&#xff0c;本帖记录所需所想的一些内容。 YOLOv3 网络结构 一共53层&#xff0…

软件著作权申请:保障开发者权益,促进软件创新

一、引言 在数字化时代&#xff0c;软件作为信息技术的核心&#xff0c;已成为推动社会进步和经济发展的重要力量。然而&#xff0c;随着软件产业的蓬勃发展&#xff0c;软件侵权和抄袭现象也日益严重。为了保护软件开发者的合法权益&#xff0c;促进软件产业的健康发展&#…

一维信号短时傅里叶变换域邻域降噪方法(MATLAB)

噪声在人类日常生活中无处不在,其会降低语音信号的质量和可懂度。在低信噪比的恶劣环境中,这种负面影响愈发严重。为了解决这个问题,众多研究人员在过去的几十年里提出了许多降噪算法。 根据原理的不同,降噪算法可大致分为五类:谱减法、最优滤波法、基于统计模型的方法、子空间…

【Java EE】Spring IOCDI

Spring IOC & DI 文章目录 Spring IOC & DI一、Spring是什么&#xff1f;二、IOC(控制反转)2.1 通俗理解2.2 造汽车的例子理解IOC2.3 IOC详解1. 获取Bean2. 方法注解——Bean1. 应用场景&#xff1a;2. 应用方法&#xff1a;3. 注意要点&#xff1a; 特别注意: 四、DI4…

基于springboot+vue+uniapp的超市售货管理平台

开发语言&#xff1a;Java框架&#xff1a;springbootuniappJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#…

工具网源码|计算某一天是当年的第几周,第几天,黄历工具

源码简介&#xff1a; 工具网源码|计算某一天是当年的第几周&#xff0c;第几天&#xff0c;黄历工具&#xff0c;无文章系统&#xff0c;全站同过算法实现&#xff0c;并在前台展示&#xff0c;页面多&#xff0c;很适合seo。 演示站&#xff1a; https://dijizhou.wengu8.com…

从项目中学习Bus-Off的快慢恢复

0 前言 说到Bus-Off&#xff0c;大家应该都不陌生&#xff0c;使用VH6501干扰仪进行测试的文章在网上数不胜数&#xff0c;但是一般大家都是教怎么去干扰&#xff0c;但是说如何去看快慢恢复以及对快慢恢复做出解释比较少&#xff0c;因此本文以实践的视角来讲解Bus-Off的快慢恢…

期末复习---程序填空

注意&#xff1a; 1.数组后移 *p *(p-1) //把前一个数赋值到后一个数的位置上来覆盖后一个数 2.指针找最大字符 max *p while( *p){ if( max< *p) { max*p; qp;/ 用新的指针指向这个已经找到的最大位置&#xff1b;!!!!!!!!! } p; //因为开始没有next &#xff…

网络爬虫(二) 哔哩哔哩热榜高频词按照图片形状排列

我们有时候需要爬取结果生成为自定义的词云图 生成自定义的词云图通常需要以下步骤&#xff1a; 1. 爬取数据&#xff1a;使用爬虫工具或库&#xff0c;如requests、BeautifulSoup等&#xff0c;可以爬取网页、论坛、社交媒体等平台上的文本数据。 2. 数据预处理&#xff1a…

走进开源企业 | 湖南大学OpenHarmony技术实训活动在开鸿智谷顺利举办!

6月24日-6月26日&#xff0c;2024开放原子校源行之湖南大学信息科学与工程学院师生走进开源企业实训交流活动顺利落下帷幕。湖南大学信息科学与工程学院的师生代表团一行90人参与了湖南开鸿智谷数字产业有限公司&#xff08;以下简称“开鸿智谷”&#xff09;与母公司拓维信息系…

计算机的错误计算(十八)

摘要 计算机的错误计算&#xff08;四&#xff09;指出一元二次方程的计算精度问题。本节给出其一种解决方案。 计算机的错误计算&#xff08;四&#xff09;与&#xff08;十七&#xff09;分别指出一元二次方程的求解是具有挑战性的难题&#xff0c;其出错原因是因为相减相消…

(超详细)数据结构——“队列”的深度解析

目录 前言&#xff1a; 1.队列的概念 2.队列的实现 3.代码实现队列 3.1 队列的初始化 3.2 插入 3.3 删除 3.4 队列的队头&#xff0c;队尾和大小 3.5 判空 3.6 销毁 3.7 测试 前言&#xff1a; 队列与栈都是线性表&#xff0c;它们的结构也非常类似&#…

一维信号全变分(TV)降噪方法(MATLAB)

信号降噪一直是领域研究的热点&#xff0c;这是一项十分有意义并且极具挑战性的工作&#xff0c;经过几十年来相关科研人员的共同努力&#xff0c;降噪技术得到了极大的发展&#xff0c;并在现实生活中也得到了广泛的应用。其中&#xff0c;许多常用的方法有&#xff1a;小波变…

2024 年江西省研究生数学建模竞赛题目 B题投标中的竞争策略问题--完整思路、代码结果分享(仅供学习)

招投标问题是企业运营过程中必须面对的基本问题之一。现有的招投标平台有国家级的&#xff0c;也有地方性的。在招投标过程中&#xff0c;企业需要全面了解招标公告中的相关信息&#xff0c;在遵守招投标各种规范和制度的基础上&#xff0c;选择有效的竞争策略和技巧&#xff0…

【PB案例学习笔记】-26制作一个带浮动图标的工具栏

写在前面 这是PB案例学习笔记系列文章的第26篇&#xff0c;该系列文章适合具有一定PB基础的读者。 通过一个个由浅入深的编程实战案例学习&#xff0c;提高编程技巧&#xff0c;以保证小伙伴们能应付公司的各种开发需求。 文章中设计到的源码&#xff0c;小凡都上传到了gite…

Python处理excel数据详解

1.导入文件 注意&#xff1a;要把excel放到跟你的python文件在同一个地方 import pandas as pd import numpy as np dfpd.read_excel("鸢尾花训练数据.xlsx",engine"openpyxl") import pandas 先引入 (若没有下载 需要在终端下载 pip install pandas)…

【Spring Boot】基于 JPA 开发的文章管理系统(CRUD)

基于 JPA 开发的文章管理系统&#xff08;CRUD&#xff09; 1.实现文章实体2.实现数据持久层3.实现服务接口和服务接口的实现类3.1 创建服务接口3.2 编写服务接口的实现 4.实现增、删、改、查的控制层 API 功能4.1 获取文章列表4.2 根据 id 获取文章对象4.3 新增4.4 保存4.5 删…

安全隔离上网的有效途径:沙箱

在数字化浪潮日益汹涌的今天&#xff0c;网络安全成为了不可忽视的重要议题。沙箱技术作为一种高效的隔离机制&#xff0c;为企业和个人提供了一种在享受网络便利的同时&#xff0c;保障系统安全的解决方案。本文旨在深入探讨沙箱技术如何做到隔离上网&#xff0c;从而为用户提…