SpringBoot3 整合 MyBatis 实现数据库操作
在 Java 后端开发中,SpringBoot 凭借其 “约定优于配置” 的特性,极大简化了项目搭建与开发流程,而 MyBatis 作为一款优秀的持久层框架,能灵活实现数据库交互。将 SpringBoot3 与 MyBatis 整合,可高效完成数据库操作,是后端开发中极为常用的技术组合。
一、添加依赖
在进行整合前,需确保开发环境已具备 Java 17+(SpringBoot3 对 Java 版本有最低要求)、Maven/Gradle 构建工具,以及对应的 MySQL 数据库环境。整合的第一步是引入核心依赖,通过依赖管理工具自动加载所需 jar 包,避免手动导入的繁琐与版本冲突问题。
在 pom.xml(Maven 项目)或 build.gradle(Gradle 项目)中,需添加以下关键依赖:
- MyBatis 整合 SpringBoot 的 Starter 依赖:提供 MyBatis 与 SpringBoot 无缝集成的核心能力,自动配置 SqlSessionFactory、SqlSessionTemplate 等核心组件;
- MySQL 驱动依赖:用于连接 MySQL 数据库,实现 SQL 语句的执行与数据交互。
添加依赖后,构建工具会自动下载并引入相关资源,为后续整合工作奠定基础。
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.1</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
二、配置文件设置:数据源与 MyBatis 参数
SpringBoot 默认支持 application.yml(或 application.properties)配置文件,通过该文件可集中管理项目配置信息,无需手动编写复杂的 XML 配置。此步骤需完成两大核心配置:数据源配置与 MyBatis 参数配置。
2.1 数据源配置
指定数据库连接信息,确保 SpringBoot 应用能成功连接到目标数据库。配置内容包括:
数据库 URL:指定数据库地址、端口号、数据库名称,以及编码格式、SSL 连接策略等附加参数;
数据库用户名与密码:登录数据库的认证信息;
数据库驱动类名:MySQL 8.0 + 对应的驱动类为 com.mysql.cj.jdbc.Driver,需与驱动依赖版本匹配。
2.2 MyBatis 参数配置
主要配置 MyBatis 的核心行为,例如:
Mapper XML 文件的扫描路径:告知 MyBatis 去哪里查找定义 SQL 语句的 XML 文件;
实体类别名包扫描路径:为实体类设置别名,简化 Mapper XML 中参数类型与返回类型的配置;
日志级别(可选):配置 MyBatis 日志输出级别,便于开发过程中调试 SQL 语句。
配置示例(application.yml):
spring:
datasource:
url: jdbc:mysql://localhost:3306/qcby_db?useUnicode=true&characterEncoding=utf-8&serverTimezone=CTT
username: root
password:
driver-class-name: com.mysql.cj.jdbc.Driver
mybatis:
mapper-locations: classpath:mapper/*.xml #对应mapper映射xml文件所在路径
type-aliases-package: com.xxxx.entity #对应实体类路径
configuration:
# 配置日志
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
map-underscore-to-camel-case: true
三、启动类添加 @MapperScan 注解
SpringBoot 启动类是应用的入口,通过添加 @MapperScan 注解,可指定 MyBatis Mapper 接口的扫描路径。Spring 会自动扫描该路径下的所有 Mapper 接口,并为其创建动态代理对象,无需手动为每个 Mapper 接口添加 @Mapper 注解,简化配置流程。
示例代码:
package com.qcby.springbootdemotest;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
@MapperScan("com.qcby.springbootdemotest.dao")
public class SpringBootDemoTestApplication {
public static void main(String[] args) {
SpringApplication.run(SpringBootDemoTestApplication.class, args);
}
}
四、测试
4.1 创建数据库和表结构
根据业务需求设计数据库表结构,通过 SQL 语句在 MySQL 中创建对应的表。例如,创建一个用户表(user):
create database mybatis_demo;
use mybatis_demo;
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '用户名称',
`birthday` datetime(0) DEFAULT NULL COMMENT '生日',
`sex` char(1) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '性别',
`address` varchar(256) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '地址',
`password` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '密码',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 5 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
INSERT INTO `user` VALUES (1, '老王', '2018-02-27 17:47:08', '男', '北京', '123456');
INSERT INTO `user` VALUES (2, '熊大', '2018-03-02 15:09:37', '女', '上海', '123456');
INSERT INTO `user` VALUES (3, '熊二', '2018-03-04 11:34:34', '女', '深圳', '123456');
INSERT INTO `user` VALUES (4, '光头强', '2018-03-04 12:04:06', '男', '广州', '123456');
4.2 创建实体类
实体类(Entity)是数据库表的映射模型,每个实体类对应数据库中的一张表,实体类的属性与表中的字段一一对应。通过实体类,可实现 Java 对象与数据库数据的转换。
示例代码(User.java):

public class User {
private Integer id;
private String username;
private Date birthday;
private String sex;
private String address;
private String password;
//get/set方法
//toString()
}
也可以运用LomBok省略get/set toString()方法
import lombok.Data;
@Data // Lombok注解,自动生成getter、setter、toString等方法
public class User {
private Integer id;
private String username;
private Date birthday;
private String sex;
private String address;
private String password;
}
注:使用 Lombok 需添加对应的依赖,可简化实体类代码编写,避免重复编写 getter/setter 方法。
4.3 编写Mapper Xml文件
Mapper XML 文件是 MyBatis 的核心配置文件之一,用于存放 SQL 语句,实现数据库的增删改查操作。每个 Mapper XML 文件通常对应一个 Mapper 接口,通过命名空间(namespace)与 Mapper 接口关联。
核心要素:
- 命名空间(namespace):必须与对应的 Mapper 接口全路径一致;
- SQL 标签:根据操作类型使用
<select>(查询)、<insert>(新增)、<update>(修改)、<delete>(删除)标签; - 参数类型(parameterType):指定 SQL 语句的入参类型,可使用实体类别名或全路径;
- 结果类型(resultType/resultMap):指定 SQL 语句的返回类型,resultType 适用于简单类型或实体类与表字段完全匹配的场景,resultMap 适用于字段名与属性名不匹配的复杂场景。
<?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.qcby.dao.UserDao">
<select id="findAll" resultType="com.qcby.model.User">
select * from user;
</select>
</mapper>
4.4 创建 Controller:调用 Mapper 实现数据交互
Controller 作为 SpringBoot 应用的请求入口,负责接收前端请求,调用 Mapper 接口中的方法执行数据库操作,最后将结果返回给前端。通过依赖注入(@Autowired)的方式,可直接获取 Mapper 接口的动态代理对象,无需手动创建实例。
package com.example.demo.controller;
import com.example.demo.entity.User;
import com.example.demo.mapper.UserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/user") // 接口统一前缀
public class UserController {
@Autowired
private UserMapper userMapper; // 注入Mapper接口
// 查询所有用户
@GetMapping("/list")
public List<User> getAllUsers() {
return userMapper.selectAllUsers();
}
// 根据ID查询用户
@GetMapping("/{id}")
public User getUserById(@PathVariable Integer id) {
return userMapper.selectUserById(id);
}
// 新增用户
@PostMapping
public String addUser(@RequestBody User user) {
int result = userMapper.insertUser(user);
return result > 0 ? "新增成功" : "新增失败";
}
// 修改用户
@PutMapping
public String updateUser(@RequestBody User user) {
int result = userMapper.updateUser(user);
return result > 0 ? "修改成功" : "修改失败";
}
// 删除用户
@DeleteMapping("/{id}")
public String deleteUser(@PathVariable Integer id) {
int result = userMapper.deleteUserById(id);
return result > 0 ? "删除成功" : "删除失败";
}
}
五、测试验证
完成以上步骤后,启动 SpringBoot 应用,通过 Postman、浏览器或其他接口测试工具,调用 Controller 中定义的接口,验证数据库操作是否正常。例如:
- 访问
http://localhost:8080/user/list,可查询所有用户数据; - 发送 POST 请求到
http://localhost:8080/user,携带用户信息 JSON,可新增用户; - 访问
http://localhost:8080/user/1,可查询 ID 为 1 的用户。
若接口能正常返回结果,且数据库数据同步更新,则说明 SpringBoot3 与 MyBatis 的整合已成功实现。

六、总结
SpringBoot3 整合 MyBatis 的核心在于 “简化配置、高效交互”,通过依赖引入、配置文件设置、接口与 XML 编写等步骤,即可快速实现数据库的增删改查操作。该整合方案既保留了 MyBatis 灵活编写 SQL 的优势,又借助 SpringBoot 的自动配置能力,减少了繁琐的手动配置,大幅提升了后端开发效率。在实际开发中,可根据业务需求扩展复杂查询、分页、事务管理等功能,进一步完善应用的数据库交互能力。
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐
所有评论(0)