Spring Boot + MyBatis + MySQL 入门与实战详解

本文将从零开始,系统讲解如何在 Spring Boot 项目中集成 MyBatis 框架,实现对 MySQL 数据库的高效读写操作。内容由浅入深,结构清晰,适合初学者和进阶开发者参考。

目录

1.SQL知识点回顾:

       1.数据库与表的基本概念

          2.数据类型选择

        3.表结构设计最佳实践

        4.DDL :创建与修改表

                5:DML:增删改查

6.查询进阶:WHERE、ORDER BY 、LIMIT

7.聚合函数 group by 

2.springboot中使用mybatis读取mysql数据

1.创建springboot项目

2.新建数据库

3.配置数据库连接

4.springboot从前端到后端数据库全流程

1.mapper.xml 文件基础知识

2.接下来就写一个从后端获取所有的user信息并返回给前端的流程

1.entity

2.mapper

3.service

4.controller

5.测试结果

3.总结:


1.SQL知识点回顾:

       1.数据库与表的基本概念

  • 数据库(Database):逻辑容器,用于组织和存储一组相关的表。
  • 表(Table):由行(记录)和列(字段)组成,每一列有固定的数据类型。
  • 主键(Primary Key):唯一标识一条记录,不可为空(NOT NULL),推荐使用自增整数或 UUID。
  • 外键(Foreign Key):用于建立表间关系,保证引用完整性(可选,MyBatis 中常通过逻辑关联实现)。

          2.数据类型选择

        整型:INT/BIGINT   (ID主键建议用BIGINT防溢出)

        字符串: VARCHAR(n)  可变长,n<=1000

        时间:DATETIME/TIMESTAMP  DATETIME 范围大,不带时区;TIMESTAMP 自动更新,带时区转换

        布尔:TINYINT(1)

        3.表结构设计最佳实践

        主键命名统一为id

        字段名用小字+下划线(如create_time)

        避免使用mysql保留字段(如order desc)

        4.DDL :创建与修改表

       

        修改表结构:

        

                5:DML:增删改查

        1:插入(INSERT)

        

          2.查询(SELECT)

           3.更新(UPDATE)

            4.删除(DELETE)

        

6.查询进阶:WHERE、ORDER BY 、LIMIT

条件查询:

where用于条件查询,用来查询符合条件的数据,例子说明查询user表中所有大于18 且 (名字格式开头是张的或者邮箱不是空的)  order by 根据created_at 降序排序    limit 只取前10条

like concat ('%',#{keyword},'%')   表示只有字符串中有keyword就符合匹配

7.聚合函数 group by 

COUNT()用于统计数量

SUM()用于加取数量

AVG()用于计算平均数

MAX()用于找到最大值

MIN()用于找到最小值

8.JOIN多表关联查询

内连接只返回两张表中匹配的记录,只有当左表和右表在连接条件上都有对应行时,才会出现在结果中。等于是两表的交集。

适用场景:只关心“双方都存在”的数据,比如“查询有订单的用户”。

左连接以左表为主,左表的所有记录都会显示在结果中,如果右表没有匹配的记录,则右表字段显示为 NULL

适用场景:查询“所有用户,以及他们的订单(没有订单也显示)”。

2.springboot中使用mybatis读取mysql数据

1.创建springboot项目

2.新建数据库

创建一张名为user的表 字段信息如下

3.配置数据库连接

在 pom.xml中  添加mybatis  依赖  使用maven自动下载依赖

在application.yml中

url中 springboot_mybatis 是你的数据库名

username 是你的用户名

password是你的密码

driver-class-name是你的驱动器名字

mybatis中mapper-locations 是你的mapper存放的位置 一般放在资源文件中

type-aliases-package 是你定义的类的位置

map-underscore-to-camel-case 是驼峰映射

在启动类中@mapperscan  扫描你mapper包的位置

4.springboot从前端到后端数据库全流程

现在我们已经建好了项目所需要的包

controller控制包 主要是用来接收发送的请求,交给service处理,并返回处理好后的数据

entity 实体包 用于存放定义好的类

mapper包 用于存放mapper接口与resources中的mapper.xml映射  

service包 用于处理数据,给交mapper去与数据库交互

resources下的mapper包 存放的是mapper.xml文件  里面写的是sql语句与数据库交互

1.mapper.xml 文件基础知识

2.接下来就写一个从后端获取所有的user信息并返回给前端的流程

1.entity

首先在entity实体包下 定义一个User类   并为他添加属性(这里的属性类型和名字都应该与数据库中的类型名字一一对应,数据库中有下划线的内容,在类中可以用大写来代替),并自动创建他们的getter和setter方法和toString 方法。

2.mapper

在mapper包中创建一个接口UserMapper   @Mapper是将当前接口注册成Bean     创建一个返回User集合的getUsers()方法;

在resources下的mapper中创建一个UserMapper.xml    namespace中的内容是对应上面mapper中的UserMapper      写一个select 查询 user中的所有数据

3.service

在service包中创建一个UserService接口   添加@service注解  用于注册Bean    创建getUsers方法

在他的实现类中  使用@Service注册Bean   @Autowired 注解注入Bean对象     实现getUsers方法 

4.controller

在controller包中使用@RestController注解     @Autowired 注入UserService   创建一个get方法的getUser()方法.

5.测试结果

成功返回数据库中的所有数据

3.总结:

本文系统地讲解了如何在 Spring Boot 项目中集成 MyBatis 框架,实现对 MySQL 数据库的高效读写操作。内容从 SQL 基础知识入手,涵盖数据库设计规范、常用 DDL/DML 语句、多表关联查询(如 INNER JOIN、LEFT JOIN)以及聚合函数等核心概念,为后续开发打下坚实基础。

在此基础上,文章详细演示了 Spring Boot 与 MyBatis 的整合流程:

  • 通过合理配置 pom.xml 和 application.yml,完成数据库连接与 MyBatis 环境搭建;
  • 遵循分层架构(Controller → Service → Mapper → Entity),清晰划分职责,提升代码可维护性;
  • 利用 @MapperScan 自动注册 Mapper 接口为 Spring Bean,并借助 map-underscore-to-camel-case 实现数据库下划线字段与 Java 驼峰属性的自动映射;
  • 通过编写完整的增删改查示例(特别是查询所有用户信息的全流程),展示了从前端请求到数据库交互再到响应返回的完整链路。

整个过程强调规范性(如主键命名、字段命名)、可扩展性(接口与实现分离)和工程实践性(依赖管理、配置优化),既适合初学者快速上手,也为进阶开发者提供了可复用的最佳实践模板。

掌握这一套技术栈组合(Spring Boot + MyBatis + MySQL),将为你构建高性能、可维护的企业级后端服务奠定坚实基础。后续可进一步探索动态 SQL、分页插件、事务管理、缓存集成等高级特性,持续提升开发效率与系统稳定性。

<think>好的,我现在需要向用户介绍如何使用Spring Boot整合MyBatisMySQL。首先,我得理清楚整个流程,确保每个步骤都正确无误。用户可能是刚开始学习这个技术栈的开发者,所以需要从基础开始,逐步引导。 首先,我应该确定Spring BootMyBatisMySQL各自的作用。Spring Boot简化了项目的初始配置,MyBatis是持久层框架,而MySQL是数据库。整合这三者,用户需要了解如何配置依赖、连接数据库、创建实体和Mapper接口,以及如何测试。 接下来,我需要考虑项目的创建步骤。使用Spring Initializr生成项目骨架,添加必要的依赖,比如Spring Web、MyBatisMySQL驱动。这部分需要注意依赖的版本兼容性,但Spring Initializr通常会处理这些,所以可能不需要特别说明版本,除非有常见问题。 然后是配置文件,application.properties或application.yml。需要设置数据库连接信息,包括URL、用户名、密码。还要配置MyBatis的mapper位置和别名,这样MyBatis才能正确找到映射文件。这里可能需要提醒用户根据实际环境修改数据库配置。 接下来是实体类和Mapper接口的创建。实体类对应数据库表,需要正确使用注解或XML映射。MyBatis支持注解和XML两种方式,用户可能更倾向于注解的简洁,但XML在某些复杂查询中更灵活。可能需要简要说明两者的优缺点,但示例中使用注解可能更简单。 然后,Service层和Controller层的实现。这部分需要展示如何将Mapper注入到Service中,再通过Controller暴露API。需要强调Spring的依赖注入和分层架构的好处,比如解耦和可维护性。 测试部分也很重要。用户需要知道如何通过单元测试或使用Postman等工具测试接口。可能需要给出一个简单的测试用例,比如插入数据或查询数据,确保整个流程正确。 可能遇到的常见问题包括数据库连接失败、Mapper接口未找到、配置错误等。需要提醒用户检查数据库服务是否运行,配置文件是否正确,以及包扫描路径是否包含Mapper接口所在的包。 另外,可能需要提到MyBatis的日志配置,方便调试SQL语句。还有事务管理,确保在需要的时候使用@Transactional注解。 最后,总结整个流程,强调每个步骤的重要性,并鼓励用户动手实践,遇到问题时查阅文档或社区资源。可能还需要推荐一些扩展学习内容,比如MyBatis的动态SQL、分页插件,或者Spring Boot的其他特性。</think>以下是使用Spring Boot整合MyBatisMySQL的技术方案详解: --- ### **一、技术选型** - **Spring Boot 3.x**:快速构建Spring应用 - **MyBatis 3.x**:持久层框架 - **MySQL 8.x**:关系型数据库 - **Maven/Gradle**:项目管理工具 --- ### **二、开发步骤** #### **1. 项目初始化** 使用[Spring Initializr](https://start.spring.io/)创建项目,勾选: - Spring Web - MyBatis Framework - MySQL Driver 生成后的`pom.xml`关键依赖: ```xml <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>3.0.3</version> </dependency> <dependency> <groupId>com.mysql</groupId> <artifactId>mysql-connector-j</artifactId> </dependency> ``` #### **2. 数据库配置** `application.yml`配置示例: ```yaml spring: datasource: url: jdbc:mysql://localhost:3306/mydb?useSSL=false&serverTimezone=UTC username: root password: 123456 driver-class-name: com.mysql.cj.jdbc.Driver mybatis: mapper-locations: classpath:mapper/*.xml type-aliases-package: com.example.demo.entity ``` #### **3. 实体类创建** ```java public class User { private Long id; private String name; private Integer age; // getters/setters } ``` #### **4. Mapper接口开发** ```java @Mapper public interface UserMapper { @Select("SELECT * FROM users WHERE id = #{id}") User selectById(Long id); @Insert("INSERT INTO users(name, age) VALUES(#{name}, #{age})") @Options(useGeneratedKeys = true, keyProperty = "id") int insert(User user); } ``` #### **5. Service层实现** ```java @Service public class UserService { @Autowired private UserMapper userMapper; public User getUserById(Long id) { return userMapper.selectById(id); } public int createUser(User user) { return userMapper.insert(user); } } ``` #### **6. Controller层开发** ```java @RestController @RequestMapping("/users") public class UserController { @Autowired private UserService userService; @GetMapping("/{id}") public User getUser(@PathVariable Long id) { return userService.getUserById(id); } @PostMapping public ResponseEntity<?> createUser(@RequestBody User user) { int result = userService.createUser(user); return result > 0 ? ResponseEntity.ok().build() : ResponseEntity.badRequest().build(); } } ``` --- ### **三、最佳实践** 1. **事务管理**:在Service方法添加`@Transactional` 2. **SQL优化**:复杂查询推荐使用XML映射文件 3. **连接池配置**:建议使用HikariCP(Spring Boot默认集成) ```yaml spring.datasource.hikari: maximum-pool-size: 20 connection-timeout: 5000 ``` --- ### **四、常见问题排查** 1. **数据库连接失败**: - 检查MySQL服务状态 - 验证用户名/密码是否正确 - 确认`serverTimezone`参数设置 2. **Mapper接口未注入**: - 添加`@MapperScan("com.example.mapper")`到启动类 - 检查Mapper接口是否有`@Mapper`注解 3. **SQL执行错误**: - 开启MyBatis日志:`logging.level.com.example.mapper=DEBUG` - 检查SQL语法是否符合MySQL规范 --- ### **五、扩展建议** - 集成PageHelper实现分页 - 使用MyBatis-Plus增强功能 - 配置Druid连接池监控 - 集成Flyway数据库版本管理 通过上述方案,开发者可以快速构建基于Spring Boot+MyBatis+MySQL的企业级应用,兼顾开发效率和系统性能。建议结合具体业务需求进行架构优化。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值