前言
mybatis-plus(简称mp)是mybatis的增强工具,在mybatis基础上做了无侵入式扩展,核心优势是“简化开发、提高效率”——无需编写大量xml映射文件,无需手动写crud基础语句,就能快速实现mysql数据库的连接与操作。
本文面向spring boot新手,全程贴合实战,从环境准备、项目搭建、配置编写、代码实现到测试验证,一步一步教你快速完成spring boot + mybatis-plus连接mysql,同时梳理高频踩坑点,规避连接失败、查询无结果等问题,确保新手也能一次成功,快速上手数据库操作。
一、前置准备:环境与依赖确认(必看,避坑基础)
连接mysql前,需确保本地环境和核心依赖匹配,避免因版本不兼容、环境未配置导致连接失败,以下是标准配置,新手直接照搬即可。
1. 本地环境要求
jdk:1.8 及以上(优先1.8,兼容性最佳,避开17+,减少依赖冲突);
spring boot:2.7.x 稳定版(新手不推荐3.x,部分语法和依赖有差异,上手难度高);
mybatis-plus:3.5.x 版本(与spring boot 2.7.x 完美适配,无兼容性问题);
mysql:5.7 或 8.0 版本(本文以mysql 8.0 为例,5.7仅数据库驱动配置略有差异,文末补充说明);
开发工具:idea 社区版(免费够用,内置maven、spring boot模板,简化操作);
构建工具:maven 3.6.3(提前配置阿里云镜像,避免依赖下载超时)。
2. 核心依赖说明(无需手动写,idea自动导入)
spring boot集成mybatis-plus,无需手动引入mybatis(mybatis-plus已内置),只需引入4个核心依赖,idea创建项目时勾选对应选项即可自动导入,也可手动在pom.xml中添加。
<!-- 1. spring boot 核心启动器(必选) -->
<dependency>
<groupid>org.springframework.boot</groupid>
<artifactid>spring-boot-starter-web</artifactid>
</dependency>
<!-- 2. mybatis-plus 启动器(核心,替代mybatis) -->
<dependency>
<groupid>com.baomidou</groupid>
<artifactid>mybatis-plus-boot-starter</artifactid>
<version>3.5.3.1</version> <!-- 与spring boot 2.7.x适配 -->
</dependency>
<!-- 3. mysql 驱动(必选,区分5.7和8.0) -->
<dependency>
<groupid>com.mysql</groupid>
<artifactid>mysql-connector-j</artifactid>
<scope>runtime</scope> <!-- mysql 8.0 驱动(推荐) -->
</dependency>
<!-- 4. lombok(可选,简化实体类编写,无需写get/set方法) -->
<dependency>
<groupid>org.projectlombok</groupid>
<artifactid>lombok</artifactid>
<optional>true</optional>
</dependency>
<!-- 5. 测试依赖(必选,用于测试数据库连接和crud) -->
<dependency>
<groupid>org.springframework.boot</groupid>
<artifactid>spring-boot-starter-test</artifactid>
<scope>test</scope>
</dependency>
避坑提醒:mysql 5.7 需替换驱动依赖为 mysql-connector-java(版本5.1.47),并修改驱动类名称,具体差异见文末补充。
二、快速搭建:spring boot 项目创建(idea实操)
新手直接跟着idea步骤操作,无需手动创建文件夹和配置文件,5分钟完成项目搭建。
步骤1:新建spring boot项目
打开idea → 点击「new project」→ 左侧选中「spring initializr」→ 右侧默认「default」(https://start.spring.io/)→ 点击「next」。
步骤2:填写项目基础信息
name:项目名称(如 spring-boot-mp-mysql,无需中文、空格);
group:包名(如 com.example,可自定义);
artifact:项目标识(默认与name一致,无需修改);
java version:选择 8(必须与本地jdk版本一致);
packaging:选择 jar(默认,便于后续打包部署);
填写完成后,点击「next」。
步骤3:勾选核心依赖
左侧导航栏依次勾选以下依赖(idea自动搜索,勾选后自动导入pom.xml):
web → spring web(用于后续编写接口测试);
sql → mybatis-plus boot starter(核心依赖,必选);
sql → mysql driver(mysql驱动,必选);
developer tools → lombok(可选,简化实体类);
勾选完成后,点击「next」。
步骤4:确认项目路径,完成创建
选择项目保存路径(关键:无中文、无空格,如 d:\spring-boot-project\spring-boot-mp-mysql)→ 点击「finish」。
等待1-3分钟,idea自动加载项目、下载依赖(配置了阿里云镜像,速度更快),依赖下载完成后,项目结构无红色报错,即为搭建成功。
三、核心配置:编写 application.yml(连接mysql关键)
项目搭建完成后,删除默认的 application.properties 文件,新建 application.yml 文件(spring boot优先识别yml格式),编写数据库连接配置和mybatis-plus基础配置,这是连接mysql的核心步骤。
步骤1:新建 application.yml 文件
在 resources 目录下 → 右键 → new → file → 文件名填写 application.yml → 点击「ok」。
步骤2:编写配置内容(mysql 8.0 示例)
复制以下配置,重点修改3处:数据库名称、数据库账号、数据库密码,其余配置无需修改,直接复用。
# 服务器配置(可选,可默认)
server:
port: 8081 # 项目启动端口,避免与其他项目冲突
servlet:
context-path: /mp # 上下文路径,可选
# 数据库连接配置(核心,必须修改)
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.driver # mysql 8.0 驱动类(固定)
url: jdbc:mysql://localhost:3306/mp_demo?useunicode=true&characterencoding=utf8&servertimezone=gmt%2b8&usessl=false
# 说明:url中需修改 mp_demo 为你的本地数据库名称,3306为mysql默认端口(未修改过则无需改)
username: root # 你的mysql账号(默认root)
password: 123456 # 你的mysql密码(安装mysql时设置的密码)
# mybatis-plus 配置(核心,简化开发)
mybatis-plus:
mapper-locations: classpath:mapper/**/*.xml # mapper.xml文件存放路径(可选,后续自定义sql时用)
type-aliases-package: com.example.springbootmpmysql.entity # 实体类包路径(必须修改为你的包名)
configuration:
map-underscore-to-camel-case: true # 开启下划线转驼峰(如数据库字段 user_name → 实体类 username)
log-impl: org.apache.ibatis.logging.stdout.stdoutimpl # 开启sql日志打印(可选,便于调试,查看执行的sql语句)
配置关键说明(避坑重点)
url 配置:
mp_demo:需替换为你本地已创建的mysql数据库名称(提前手动创建,下文有步骤);servertimezone=gmt%2b8:mysql 8.0 必须添加时区配置(gmt%2b8代表东八区,避免时区错乱);usessl=false:关闭ssl连接(本地开发无需开启,开启可能导致连接失败);& 转义:yml中直接写 & 会解析失败,需用 & 或用单引号包裹url(本文示例已处理,直接复用即可)。
driver-class-name:mysql 8.0 固定为
com.mysql.cj.jdbc.driver,mysql 5.7 为com.mysql.jdbc.driver。type-aliases-package:必须替换为你项目中「实体类」所在的包路径(后续创建实体类需放在该包下,否则mybatis-plus无法识别)。
四、前置操作:mysql 数据库创建(手动操作)
需提前在本地mysql中创建数据库(与yml配置中的数据库名称一致),无需创建表(后续用mybatis-plus自动生成,或手动创建简单表测试)。
步骤1:打开mysql客户端(navicat/mysql workbench)
用账号密码登录本地mysql(账号root,密码为你安装mysql时设置的密码)。
步骤2:创建数据库
执行以下sql语句,创建数据库(名称与yml中url 里的 mp_demo 一致,编码格式为utf-8):
-- 创建数据库(名称mp_demo,可自定义,需与yml配置一致) create database if not exists mp_demo default character set utf8mb4 default collate utf8mb4_general_ci;
执行完成后,刷新数据库列表,即可看到创建好的 mp_demo 数据库。
步骤3:创建测试表(可选,用于后续测试)
为了验证数据库连接成功,手动创建一张简单的用户表(user),执行以下sql:
-- 切换到mp_demo数据库 use mp_demo; -- 创建user表(简单测试用) create table if not exists `user` ( `id` bigint(20) not null auto_increment comment '主键id', `name` varchar(30) default null comment '姓名', `age` int(11) default null comment '年龄', `email` varchar(50) default null comment '邮箱', primary key (`id`) ) engine=innodb default charset=utf8mb4 comment='用户表';
五、代码实现:编写实体类、mapper接口(极简)
mybatis-plus的核心优势的是“无需编写xml映射文件”,只需创建实体类和mapper接口,就能自动实现crud操作,这里编写简单代码,用于测试数据库连接。
步骤1:创建实体类(entity)
在 com.example.springbootmpmysql.entity 包下(包路径与yml中 type-aliases-package 一致),创建 user 实体类,对应mysql中的 user 表。
package com.example.springbootmpmysql.entity;
import lombok.data;
import com.baomidou.mybatisplus.annotation.idtype;
import com.baomidou.mybatisplus.annotation.tableid;
import com.baomidou.mybatisplus.annotation.tablename;
/**
* 用户实体类,对应数据库user表
*/
@data // lombok注解,自动生成get/set、tostring等方法
@tablename("user") // 指定对应数据库表名(若实体类名与表名一致,可省略)
public class user {
// 主键id,自增(与数据库表中id字段对应)
@tableid(type = idtype.auto)
private long id;
// 姓名(与数据库表中name字段对应)
private string name;
// 年龄(与数据库表中age字段对应)
private integer age;
// 邮箱(与数据库表中email字段对应)
private string email;
}
说明:若未引入lombok,需手动编写get/set、tostring方法,否则后续测试会报错。
步骤2:创建mapper接口
在 com.example.springbootmpmysql.mapper 包下,创建 usermapper 接口,继承 mybatis-plus 提供的 basemapper 接口(basemapper 已内置crud方法,无需手动编写)。
package com.example.springbootmpmysql.mapper;
import com.baomidou.mybatisplus.core.mapper.basemapper;
import com.example.springbootmpmysql.entity.user;
import org.apache.ibatis.annotations.mapper;
/**
* usermapper接口,继承basemapper,无需编写xml映射文件
*/
@mapper // 标记为mybatis-plus的mapper接口,spring boot自动扫描
public interface usermapper extends basemapper<user> {
// 无需编写任何方法,basemapper已提供:selectbyid、selectlist、insert、update、delete等方法
}
步骤3:启动类添加扫描注解(关键避坑)
打开项目启动类(如 springbootmpmysqlapplication.java),添加 @mapperscan 注解,指定mapper接口所在的包路径,否则spring boot无法扫描到mapper接口,会导致注入失败。
package com.example.springbootmpmysql;
import org.mybatis.spring.annotation.mapperscan;
import org.springframework.boot.springapplication;
import org.springframework.boot.autoconfigure.springbootapplication;
@springbootapplication
@mapperscan("com.example.springbootmpmysql.mapper") // 扫描mapper接口所在包(必须修改为你的包名)
public class springbootmpmysqlapplication {
public static void main(string[] args) {
springapplication.run(springbootmpmysqlapplication.class, args);
}
}
避坑提醒:@mapperscan 注解中的包路径,必须与你创建的 mapper 接口所在包一致,否则会报错「no qualifying bean of type ‘xxxmapper’ available」。
六、测试验证:确认数据库连接成功
编写测试代码,通过spring boot的测试类,测试数据库是否连接成功,以及mybatis-plus是否能正常操作数据库。
步骤1:创建测试类
在 test → java → com.example.springbootmpmysql 包下,找到默认的测试类(springbootmpmysqlapplicationtests.java),编写测试方法。
步骤2:编写测试代码
package com.example.springbootmpmysql;
import com.example.springbootmpmysql.entity.user;
import com.example.springbootmpmysql.mapper.usermapper;
import org.junit.jupiter.api.test;
import org.springframework.beans.factory.annotation.autowired;
import org.springframework.boot.test.context.springboottest;
import java.util.list;
@springboottest // 标记为spring boot测试类,启动spring容器
class springbootmpmysqlapplicationtests {
// 自动注入usermapper(spring boot扫描@mapper注解后,自动创建实例)
@autowired
private usermapper usermapper;
/**
* 测试:查询所有用户(验证数据库连接和mybatis-plus配置)
*/
@test
void testselectlist() {
// basemapper内置方法:selectlist(null) → 查询所有数据(null表示无查询条件)
list<user> userlist = usermapper.selectlist(null);
// 循环打印查询结果
userlist.foreach(user -> system.out.println("用户信息:" + user));
}
/**
* 测试:新增用户(验证插入操作)
*/
@test
void testinsert() {
// 创建user对象,设置属性(id自增,无需设置)
user user = new user();
user.setname("张三");
user.setage(20);
user.setemail("zhangsan@163.com");
// basemapper内置方法:insert → 新增数据
int rows = usermapper.insert(user);
system.out.println("新增成功,影响行数:" + rows);
system.out.println("新增用户id:" + user.getid()); // 新增后,自增id会自动回显到user对象中
}
}
步骤3:运行测试方法
右键点击 testinsert 方法 → 选择「run ‘testinsert()’」,运行新增用户测试;
运行完成后,查看控制台:无红色报错,且打印「新增成功,影响行数:1」,说明数据库连接成功,新增操作正常;
再运行 testselectlist 方法,控制台会打印出新增的用户信息,说明查询操作正常。
测试成功标志
控制台无红色报错,sql日志正常打印(开启了log-impl配置);
新增用户后,打开mysql客户端,查询user表,能看到新增的数据;
查询测试能正常打印出表中所有用户数据。
七、高频踩坑点汇总(新手必看)
整理了新手连接mysql时最常遇到的5个问题,每个问题都附上根因和解决方案,遇到报错直接对照排查,快速解决。
踩坑1:数据库连接失败(access denied for user ‘root’@‘localhost’)
✅ 报错原因:yml配置中 username 或 password 错误,与mysql账号密码不匹配;
✅ 解决方案:核对mysql账号密码,修改yml中的 username 和 password,确保与本地mysql一致。
踩坑2:时区错误(servertimezone not set)
✅ 报错原因:mysql 8.0 未在url中配置时区(servertimezone=gmt%2b8);
✅ 解决方案:在yml的url中添加 &servertimezone=gmt%2b8,重启项目即可。
踩坑3:mapper注入失败(no qualifying bean of type ‘xxxmapper’ available)
✅ 报错原因:启动类未添加 @mapperscan 注解,或注解中的包路径错误;
✅ 解决方案:在启动类添加 @mapperscan,指定mapper接口所在的包路径(如 com.example.xxx.mapper)。
踩坑4:sql语句不打印,无法调试
✅ 报错原因:未开启mybatis-plus的sql日志打印配置;
✅ 解决方案:在yml的mybatis-plus.configuration中,添加 log-impl: org.apache.ibatis.logging.stdout.stdoutimpl。
踩坑5:实体类与数据库表映射失败(table ‘mp_demo.user’ doesn’t exist)
✅ 报错原因:实体类未添加 @tablename 注解指定表名,或表名与实体类名不一致;
✅ 解决方案:在实体类上添加 @tablename("user"),指定数据库表名(与mysql中的表名一致)。
八、补充说明:mysql 5.7 与 8.0 配置差异
若本地mysql是5.7版本,只需修改2处配置,其余步骤与8.0一致,具体差异如下:
1. 驱动依赖修改
<!-- mysql 5.7 驱动依赖(替换8.0的驱动) -->
<dependency>
<groupid>mysql</groupid>
<artifactid>mysql-connector-java</artifactid>
<version>5.1.47</version>
<scope>runtime</scope>
</dependency>
2. yml配置修改
spring:
datasource:
driver-class-name: com.mysql.jdbc.driver # 5.7 驱动类(去掉cj)
url: jdbc:mysql://localhost:3306/mp_demo?useunicode=true&characterencoding=utf8&usessl=false
# 5.7 无需配置servertimezone,其余配置与8.0一致
username: root
password: 123456九、总结
spring boot + mybatis-plus 连接mysql的核心流程,可总结为4步:
搭建spring boot项目,导入核心依赖(mybatis-plus、mysql驱动);
编写application.yml,配置数据库连接信息和mybatis-plus基础配置;
创建实体类和mapper接口,启动类添加@mapperscan注解;
编写测试代码,验证数据库连接和crud操作。
整个过程无需编写复杂的xml映射文件,mybatis-plus极大简化了开发流程,新手只需注意版本适配、配置路径正确、账号密码无误,就能一次连接成功。
后续可基于此基础,学习mybatis-plus的高级特性(如条件构造器、分页插件、自动生成代码),进一步提高数据库操作效率。如果遇到其他连接问题,可对照本文踩坑点排查,或留言交流!
到此这篇关于spring boot+mybatis-plus快速连接mysql操作文章就介绍到这了,更多相关spring boot mybatis-plus连接mysql内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论