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

文章目录

    • 一、创建 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=convertToNulldriver-class-name: com.mysql.jdbc.Driverusername: rootpassword: 各位大佬点点赞mybatis-plus:mapper-locations: classpath:mybatis-mapper/*.xml

2、TestController

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

@RestController
public class Controller {@Autowiredprivate 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 {@Autowiredprivate TbUserMapper tbUserMapper;@Overridepublic 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 {@Autowiredprivate TbUserMapper tbUserMapper;@Testpublic 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.mzph.cn/bicheng/39159.shtml

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

相关文章

网安小贴士(3)网安协议

一、前言 网络安全协议是构建安全网络环境的基础&#xff0c;它们帮助保护网络通信免受各种威胁和攻击。 二、定义 网络安全协议是指在计算机网络中用于确保网络通信和数据传输安全的协议。它们定义了在网络通信过程中的安全机制、加密算法、认证和授权流程等&#xff0c;以保…

为什么 [] == ![] 为 true?

&#x1f9d1;‍&#x1f4bb; 写在开头 点赞 收藏 学会&#x1f923;&#x1f923;&#x1f923; 前言 面试官问我&#xff0c;[] ![] 的结果是啥&#xff0c;我&#xff1a;蒙一个true&#xff1b; 面试官&#xff1a;你是对的&#xff1b;我&#xff1a;内心非常高兴&a…

继承QAbstractListModel,结合QListView

这里想要写一个QAbstractListModel的子类&#xff0c;学习一下如何实例化QAbstractListModel。 QAbstractListModel子类化-CSDN博客 QVariant与自定义类型互转之奇巧淫技_qt 类型转 qvariant-CSDN博客 #pragma once#include <QStyledItemDelegate> #include <qmeta…

Python:Pycharm安装指南

三、Pycharm安装指南 在开始之前今天内容之前&#xff0c;将上篇的初体验练习题公布如下&#xff1a; 初体验练习题&#xff1a;输入两个字符&#xff0c;将他们组合后输出。 str1 input("请输入名字&#xff1a;") str2 input("请输入城市&#xff1a;&qu…

嵌套组合请求对象的校验与全局捕捉

个人名片 &#x1f393;作者简介&#xff1a;java领域优质创作者 &#x1f310;个人主页&#xff1a;码农阿豪 &#x1f4de;工作室&#xff1a;新空间代码工作室&#xff08;提供各种软件服务&#xff09; &#x1f48c;个人邮箱&#xff1a;[2435024119qq.com] &#x1f4f1…

游戏AI的创造思路-技术基础-tanh函数详解

又来搞事情&#xff0c;总想着把sigmoid函数替换成其他函数作为激活函数&#xff0c;或者找到更合适某一段训练的函数&#xff0c;所以今天来聊聊tanh函数&#xff08;谁让咱当年差点去了数学系&#xff0c;结果还是在数学系转过去计算机的&#xff09; 目录 3.9. tanh函数详解…

反向沙箱技术:安全隔离上网

在信息化建设不断深化的今天&#xff0c;业务系统的安全性和稳定性成为各公司和相关部门关注的焦点。面对日益复杂的网络威胁&#xff0c;传统的安全防护手段已难以满足需求。深信达反向沙箱技术&#xff0c;以其独特的设计和强大的功能&#xff0c;成为保障政务系统信息安全的…

XTDrone-固定翼无人机编队跟踪无人车-配置教程

配置使用ROS版本为Neotic 1 配置 1.1 加载固定翼无人机编队跟踪控制工程文件 cp -r ~/XTDrone/coordination/fixed_wing_formation_control ~/catkin_ws/src 1.2 加载一些用到的功能包 sudo apt-get install ros-noetic-serial #根据自己的ROS版本修改 sudo apt-get insta…

209.力扣每日一题:质数的最大距离

代码解决 class Solution { public:// 判断一个数是否为质数bool isPrime(int n) {if (n < 1) {return false;}if (n < 3) {return true;}if (n % 2 0 || n % 3 0) {return false;}for (int i 5; i * i < n; i 6) {if (n % i 0 || n % (i 2) 0) {return false;…

如何利用GPT-4o生成有趣的梗图

文章目录 如何利用GPT-4o生成有趣的梗图一、引言二、使用GPT-4o生成梗图1. 提供主题2. 调用工具3. 获取图片实际案例输入输出 三、更多功能1. 创意和灵感2. 梗图知识 四、总结 如何利用GPT-4o生成有趣的梗图 梗图&#xff0c;作为互联网文化的一部分&#xff0c;已经成为了我们…

深圳比创达电子EMC|EMC电磁兼容性行业:推动电子产品向更高发展

随着科技的飞速发展&#xff0c;电子产品在我们的日常生活中无处不在&#xff0c;从智能手机到智能家居&#xff0c;从医疗设备到工业自动化&#xff0c;这些设备的普及和更新换代对电磁兼容性&#xff08;EMC&#xff09;提出了更高的要求。 一、EMC电磁兼容性行业的概述 EM…

mac有什么解压软件 mac怎么解压7z软件 苹果电脑好用的压缩软件有哪些

众所周知&#xff0c;macOS集成解压缩软件归档实用工具&#xff0c;可直接解压zip格式的压缩包。但对于其他比较常见的格式&#xff0c;诸如RAR、7z、TAR等&#xff0c;则无能为力&#xff0c;不过&#xff0c;我们可以选择大量第三方解压缩软件&#xff0c;帮助我们更好地完成…

2024.7.2作业

1. 梳理笔记(原创&#xff01;&#xff01;&#xff01;) 2.解析代码&#xff1a;分析每一步变量的取值 #include <stdio.h> int main(int argc, char *argv[]) { int a 10; //a10 int b a--; //b10 int c a b 2; //a9 b10 c21 int d (b--…

大模型参数规模扩大是趋势

©作者|TW 来源|神州问学 一、引言 近两年互联网科技领域&#xff0c;大模型成为了各大企业竞相发布的热点话题。百度、腾讯、阿里和华为等公司相继推出了自己的AI大模型&#xff0c;使得“大模型”这一概念迅速走入大众视野。大模型以其庞大的参数规模和强大的性能&…

玉林师范学院宿舍管理系统的设计与实现19633

玉林师范学院宿舍管理系统设计与实现 摘要&#xff1a;随着大学生人数的增加&#xff0c;宿舍管理成为高校管理中的重要问题。本论文旨在研究玉林师范学院宿舍管理系统&#xff0c;探讨其优势和不足&#xff0c;并提出改进建议。通过对相关文献的综述和实地调研&#xff0c;我们…

button1 <Button>: Missing Constraints in ConstraintLayout

书籍 《第一行代码 Android》第三版 开发 环境 Android Studio Jellyfish | 2023.3.1 问题 在学习3.2.2 创建和加载布局章节,在first_layout.xml中增加一个按钮button1时报错:"button1 <Button>: Missing Constraints in ConstraintLayout" 分析 产生这个…

【Python】已解决:NameError: name ‘unichr’ is not defined

文章目录 一、分析问题背景二、可能出错的原因三、错误代码示例四、正确代码示例五、注意事项 已解决&#xff1a;NameError: name ‘unichr’ is not defined 一、分析问题背景 在使用Python进行编程时&#xff0c;有时会遇到“NameError: name ‘unichr’ is not defined”…

装箱单填写规范‼️

装箱单填写说明 出单方 (Issuer) 出单人的名称与地址&#xff0c;应与发票的出单方相同。在信用证支付方式下&#xff0c;此栏应与信用证受益人的名称和地址一致。 受单方 (TO) 受单方的名称与地址&#xff0c;应与发票的受单方相同。多数情况下填写进口商的名称和地址&#…

JavaScript常见数组方法的详细用法及示例

1.filter():检测数值元素&#xff0c;并返回符合条件所有元素的数组(具体要符合什么条件的的元素的函数方法需要我们自己去写)。示例如下 </head> <body><button id"but" onclick"test(arr)">点击出结果</button><div id"…

monkey大全!可直接运用在项目中的常规monkey命令

测试步骤 adb devices-----了解包名-----adb shell monkey -----p 包名 ----v 运行次数&#xff08;多个参数的组合形成不同的用例以求最大的覆盖&#xff09;-----当崩溃或无响应时分析monkey日志 常规monkey命令 &#xff08;可直接在项目里使用&#xff09; adb shell m…