IDEA SpringBoot整合Mybatis(保姆级教程,超详细!!!)

目录

1. 简介

2. 创建SpringBoot项目

3. Maven依赖引入

4. 创建mapper文件夹

5. 数据源和Mybatis配置

6. 工程启动类配置

7. 连接数据库和创建测试表

8. Mapper接口和XML自动生成

9. 接口测试


1. 简介

本博客将详细介绍在IDEA中,如何整合SpringBoot与Mybatis,以实现数据库的增删改查操作。我将逐步从环境搭建到实际代码实现的完整流程,帮助读者更好地理解并掌握这一技术栈。

2. 创建SpringBoot项目

首先,我们需要创建SpringBoot项目。在创建SpringBoot项目时,可以选择使用Spring Initializr来快速生成项目结构。

创建SpringBoot项目教程,本文就不过多讲解了,具体操作可参考往期博文:

IDEA创建SpringBoot项目教程,讲解超详细!!!

3. Maven依赖引入

首先,你需要在你的pom.xml文件中添加Spring Boot和MyBatis的依赖,对于Maven,添加以下依赖:

        <!-- MyBatis Spring Boot Starter  --><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.2.2</version></dependency><!-- junit测试依赖 --><dependency><groupId>junit</groupId><artifactId>junit</artifactId><scope>test</scope></dependency><!-- lombok依赖 为了简化实体类的编写代码量 --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency><!-- 数据库连接驱动,这里以MySQL为例 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency>

4. 创建mapper文件夹

需要在java包和resources包下各创建一个文件夹,来存放mapper接口和mapper.xml文件。

ps:这块顺带把entity文件夹建好,后续有用!!!

 

5. 数据源和Mybatis配置

在resources目录下新建application.properties文件,用于存放数据库连接需要的一些配置数据(一般在新建Springboot项目都会自动生成该文件),也可以新建application.yml文件,不过格式得转换,此处作者以properties文件进行讲解:

  • spring.datasource.url:这是Spring Boot中配置数据源URL的属性。

jdbc:mysql: 表示使用的是MySQL数据库的JDBC连接。

localhost:数据库服务器的主机名,这里表示数据库服务器运行在本机上。

3306:MySQL数据库的默认端口号。

/tic:连接的数据库名,为了演示,我本地创建了个叫tic的数据库,可自行建库进行配置。

?useSSL=false&serverTimezone=UTC:这部分是连接参数的附加设置。

  • spring.datasource.username:这是Spring Boot中配置数据库连接的用户名的属性,根据个人创建的用户设置。
  • spring.datasource.password:这是Spring Boot中配置数据库连接密码的属性,根据个人创建的用户设置。
  • spring.datasource.driver-class-name:这是Spring Boot中配置数据库驱动类名的属性。

com.mysql.cj.jdbc.Driver:是MySQL Connector/J 8.0及以上版本的JDBC驱动类名。使用这个驱动类,可以确保你的Spring Boot应用程序能够连接到MySQL数据库。

如果你选择的是 MySQL Connector/J 8.0 以下版本中(如:MySQL Connector/J 5.7),JDBC 驱动类名通常是 com.mysql.jdbc.Driver

# MySQL
spring.datasource.url=jdbc:mysql://localhost:3306/tic?useSSL=false&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver# mapper.xml文件存放路径
mybatis.mapper-locations=classpath:mapper/*.xml

6. 工程启动类配置

启动类需要加入一个注解指定mapper接口的位置:@MapperScan("com.tic.mybatis")

7. 连接数据库和创建测试表

配置一下datasource插件,位置正常在IDEA界面的右侧栏。

依次点击 + 号,选择Data Source下的Mysql数据库。

在这个弹框中,下载MySQL驱动文件,然后再配置连接数据库信息。

Host:数据库服务器的主机名,如连接本地MySQL填locahost或者127.0.0.1,否则填远端服务器。

Port:MySQL数据库的端口号,如没自行修改MySQL配置,默认3306。

User:数据库连接的用户名,根据个人创建的用户设置。

Password:数据库连接密码,根据个人创建的用户设置。

ps:驱动文件必须下载,否则无法连接数据库!!!

ps:这块有个坑,配置连接数据库信息时URL也需要修改,否则在后面使用Mybatis自动生成插件时会有问题!!!

URL:jdbc:mysql://localhost:3306/tic?useSSL=false&serverTimezone=UTC

 驱动文件下载完成,且数据库配置信息填写完成后,点击Test Connection链接(测试数据库连接),如出现Succeeded相关信息,就代表添加的数据库配置信息正常,随后点击Apply即可。

ps:这里有个小坑,IDEA的datasource插件配置完成之后默认是不会显示你的数据库表的,需要设置一下。 在Schemas这一栏,勾选All schemas,并点击Apply即可!!! 

为了方便演示,我在本地创建一个名叫tic的数据库(数据库名自定义)。

鼠标右击刚刚连接的数据库管理系统选择New>>Schema。

在弹框下方完善建库DDL语句,然后点击OK按钮即可。

测试数据库建好后,在库中创建了一个user表,建表DDL语句如下: 

CREATE TABLE `user` (`id` int(11) NOT NULL AUTO_INCREMENT,`username` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '账号',`nickname` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '昵称',`password` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '密码',PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

鼠标右击刚刚建好的tic库选择New>>Table。

在弹框下方将方才的user表DDL语句复制进来,然后点击OK按钮即可。

至此IDEA连接数据库和创建测试表完成。

8. Mapper接口和XML自动生成

这里给大家推荐一款非常好用的idea插件:better-mybatis-generator,在idea的插件仓库可以直接下载。

下载好之后,在user表上右键选择 mybatis-generator。

进入自动生成页面之后,需要配置的地方有3处,设置名称和选择项目的对应文件夹即可。如果你跟我的目录结构一样,可以按照下面这样配置:

完成上述配置后,点击OK按钮后,因第一次使用该插件,需输入数据库用户和密码。

点击OK之后,Mapper接口、User实体类和Mapper.xml文件就都生成好了,生成的结果如下:

9. 接口测试

完成上述步骤后,您的项目已经顺利集成了Mybatis,那么我们现在可以对集成的结果进行一个测试,看看还有没有问题,是不是可以投入使用。

我写了一个TestController接口用来插入一条user数据:

package com.tic.mybatis.controller;import com.tic.mybatis.entity.User;
import com.tic.mybatis.mapper.UserDao;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import javax.annotation.Resource;/*** @Author: Michael Lee* @CreateTime: 2024-06-16* @Description: 测试接口*/
@RestController
@RequestMapping("/test")
public class TestController {@Resourceprivate UserDao userDao;@GetMappingpublic String findAll() {User user = new User();user.setId(1);user.setNickname("Michael Lee");user.setUsername("admin");user.setPassword("123456");userDao.insert(user);return "接口调用成功!";}
}

写完之后,鼠标右击程序入口,启动一下工程:

然后直接访问localhost:8080/test接口,此处作者接口出现异常,控制台出现Public Key Retrieval is not allowed报错。

"Public Key Retrieval is not allowed" 是一个错误消息,通常出现在尝试连接MySQL数据库时,尤其是在使用较新版本的MySQL(如MySQL 8.0及以上)时。这个错误表明客户端不允许从服务器检索公钥。

此处需要打开application.properties配置文件,修改数据库连接URL配置,新增allowPublicKeyRetrieval=true配置

spring.datasource.url=jdbc:mysql://localhost:3306/tic?useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true

修改上述配置后,重新启动工程,再次调用接口,返回下列信息则是成功!

然后我们打开数据库,即可看到数据已成功录入表中。

至此,我们的SpringBoot集成M'y'batis项目完美竣工!!!

ps:后续作者会持续更新Springboot集成各类技术框架,如感兴趣关注点一下!!!

有什么问题都可以评论区留言,看见都会回复的!!!

如果你觉得本篇文章对你有所帮助的,多多支持!!!

点赞收藏评论,抱拳了!!!

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

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

相关文章

基于SSM+Jsp的在线教育资源管理系统

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

AI办公自动化:批量根据Excel表格内容制作Word文档

工作任务&#xff1a;Excel表格中有大量文本&#xff0c;根据这些文本自动生成word文档 在chatgpt中输入提示词&#xff1a; 你是一个Python编程专家&#xff0c;写一个Python脚本&#xff0c;具体步骤如下&#xff1a; 读取Excel文件&#xff1a;"F:\AI自媒体内容\AI视…

[leetcode]将二叉搜索树转化为排序的双向链表

. - 力扣&#xff08;LeetCode&#xff09; /* // Definition for a Node. class Node { public:int val;Node* left;Node* right;Node() {}Node(int _val) {val _val;left NULL;right NULL;}Node(int _val, Node* _left, Node* _right) {val _val;left _left;right _rig…

目标检测数据集 - 零售食品LOGO检测数据集下载「包含VOC、COCO、YOLO三种格式」

数据集介绍&#xff1a;零售食品 LOGO 检测数据集&#xff0c;真实零售食品 LOGO 高质量商品图片数据&#xff0c;数据集含常见零售食品 LOGO 图片&#xff0c;包括饮料类、酒类、调味品类、膨化饼干类、巧克力类、常见零食类等等。数据集类别丰富&#xff0c;标注标签包含 150…

DeepSORT(目标跟踪算法)中卡尔曼增益的理解

DeepSORT&#xff08;目标跟踪算法&#xff09;中卡尔曼增益的理解 flyfish 先用最简单的例子来理解卡尔曼增益 公式 (1) 首先&#xff0c;通过多次测量一个物理量&#xff0c;并使用取平均值的方式来计算其真实值&#xff1a; x ^ k 1 k ( z 1 z 2 ⋯ z k ) \hat{x}_…

python-基础篇-函数-在py中的长相

文章目录 整体长相长相要求 整体长相 怎么自定义函数&#xff1f; 要知道怎么定义函数&#xff0c;就要知道函数的组成部分是怎样的。 def 函数名(参数1&#xff0c;参数2....参数n):函数体return 语句这就是 Python 函数的组成部分。 长相要求 所以自定义函数&#xff0c…

父亲节:我要做爸爸的健康监督员

父亲节将至&#xff0c;总想着能为爸爸做些什么&#xff0c;来表达我们的感激与关爱。在这个特殊的日子里&#xff0c;成为爸爸的健康监督员&#xff0c;用华为 Watch 4 的智慧健康功能&#xff0c;任何时刻都可以关注爸爸的健康状况&#xff0c;放心又安心了。 用一键微体检…

使用 python 将 Markdown 文件转换为 ppt演示文稿

在这篇博客中&#xff0c;我们将展示如何使用 wxPython 创建一个简单的图形用户界面 (GUI)&#xff0c;以将 Markdown 文件转换为 PowerPoint 演示文稿。我们将利用 markdown2 模块将 Markdown 转换为 HTML&#xff0c;并使用 python-pptx 模块将 HTML 内容转换为 PowerPoint 幻…

[Vulnhub]Wintermute LFI+SMTP+Screen+Structv2-RCE+Lxc逃逸

概要 靶机 192.168.8.104 信息收集 $ nmap 192.168.8.103 --min-rate 1000 -sC -sV 结果: Starting Nmap 7.92 ( https://nmap.org ) at 2024-06-15 05:54 EDT Nmap scan report for 192.168.8.103 (192.168.8.103) Host is up (0.035s latency). Not shown: 997 closed t…

亚马逊测评自养号与机刷的区别

前言&#xff1a; 在亚马逊运营的领域中&#xff0c;经常有人问&#xff1a;测评自养号就是机刷吗&#xff1f;它们两者有什么区别&#xff1f;做自养号太慢、太需要时间了&#xff0c;如果用机刷的话&#xff0c;会不会简单高效一点&#xff1f; 在这篇文章中&#xff0c;我…

SpringCloud 网关Gateway配置并使用

目录 1 什么是网关&#xff1f; 2 Gateway的使用 2.1 在其pom文件中引入依赖 2.2 然后gateway配置文件中配置信息 2.3 启动网关微服务 3 网关处理流程 4 前端-网关-微服务-微服务间实现信息共享传递 1 什么是网关&#xff1f; 网关&#xff1a;就是网络的关口&#xff…

【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 游戏表演赛分队(100分) - 三语言AC题解(Python/Java/Cpp)

🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 💻 ACM银牌🥈| 多次AK大厂笔试 | 编程一对一辅导 👏 感谢大家的订阅➕ 和 喜欢💗 📎在线评测链接 游戏表演赛分队(100分) 🌍 评测功能需要订阅专栏后私信联系…

Python | Leetcode Python题解之第148题排序链表

题目&#xff1a; 题解&#xff1a; class Solution:def sortList(self, head: ListNode) -> ListNode:def merge(head1: ListNode, head2: ListNode) -> ListNode:dummyHead ListNode(0)temp, temp1, temp2 dummyHead, head1, head2while temp1 and temp2:if temp1.v…

现代信号处理14_基于蒙特卡洛的信号处理(CSDN_20240616)

Monte Carlo/Simulation方法 在统计上&#xff0c;样本数量是一个很重要的问题&#xff0c;在处理问题&#xff08;如计算样本均值&#xff09;的过程中&#xff0c;样本数量越多越好。但是在实际中&#xff0c;样本往往是稀缺的&#xff0c;获取数据就要付出代价。在贝叶斯理论…

SringBoot 如何使用HTTPS请求及Nginx配置Https

SringBoot 如何使用HTTPS请求及Nginx配置Https SringBoot 如何使用HTTPS请求生成证书导入证书及配制创建配置类将pfx转成.key和.pem Nginx 安装SSL依赖./configure 安装依赖编译安装完openssl后报了新错 Nginx配置 SringBoot 如何使用HTTPS请求 生成证书 由于业务数据在传输过…

重新安装TortoiseGit后提示权限错误问题解决

今天在Windows11系统中下载安装使用TortoiseGit可视化Git工具&#xff0c;进行代码提交管理。 由于电脑之前是一位开发人员在使用&#xff0c;所以曾经安装使用过这个工具。 重新安装好软件后&#xff0c;在coding网站中复制代码路径后&#xff0c;在本地目录通过鼠标右键选择…

每日一练——有效的括号

20. 有效的括号 - 力扣&#xff08;LeetCode&#xff09; 错误记录 #include<stddef.h> #include<stdlib.h> #include<assert.h> #include<stdbool.h>typedef char STDataType;typedef struct Stack {STDataType* a;int capacity;int top; } Stack;vo…

驾校在线考试系统源码 手机+PC+平板自适应

Thinkphp在线考题源码 驾校在线考试系统 手机PC平板 自适应&#xff0c;机动车驾驶培训学校驾校类网站源码带手机端 运行环境&#xff1a;phpmysql 内附安装说明 驾校在线考试系统源码 手机PC平板自适应

[C++]使用C++部署yolov10目标检测的tensorrt模型支持图片视频推理windows测试通过

【测试通过环境】 vs2019 cmake3.24.3 cuda11.7.1cudnn8.8.0 tensorrt8.6.1.6 opencv4.8.0 【部署步骤】 获取pt模型&#xff1a;https://github.com/THU-MIG/yolov10训练自己的模型或者直接使用yolov10官方预训练模型 下载源码&#xff1a;https://github.com/laugh12321/yol…

波卡近期活动一览| Polkadot Decoded 2024 重磅来袭,300 万 DOT 将用于 DeFi 增长

Polkadot 生态近期活动精彩纷呈&#xff0c;线上线下火热进行中&#xff01;此外&#xff0c;Polkadot 2.0 的关键升级即将到来&#xff0c;Gavin Wood 博士也将在最新访谈节目中分享更多关于波卡的未来发展蓝图。波卡 DAO 通过提案&#xff0c;分配 300 万 DOT 支持 DeFi 生态…