Spring Boot 数据库操作实战:MyBatis 让 CRUD 像 “查奶茶库存” 一样简单
上一篇咱们搞定了配置管理,其中数据库配置是核心 —— 但配置好数据库后,怎么往表里存数据、查数据?新手常被 JDBC 的繁琐代码劝退:加载驱动、写 SQL 字符串、处理结果集,少一步就报错,像奶茶店手动记账,要一笔一划写清楚 “珍珠剩多少、奶茶粉够不够”,又慢又容易错。
今天咱们讲 Spring Boot+MyBatis 的数据库操作实战 ——MyBatis 是企业级数据库操作的 “标配工具”,像奶茶店的 “智能库存管理系统”:不用手动写复杂 JDBC 代码,SQL 和 Java 代码分离,支持灵活查询,新手也能快速实现 CRUD(增删改查)、分页、条件查询,全程实战 + 避坑,衔接之前的图书管理系统案例,保持风格一致。
一、先搞懂:为什么选 MyBatis?(JDBC vs MyBatis 对比)
在 Spring Boot 里操作数据库,有 JPA、MyBatis、MyBatis-Plus 等选择,但 MyBatis 凭 “灵活 + 易上手” 成为企业首选,就像奶茶店选 “智能库存系统” 而不是 “手写账本”,核心优势看这张表:
| 对比维度 | JDBC(手写账本) | MyBatis(智能库存系统) |
|---|---|---|
| 代码量 | 实现 CRUD 要写 50 + 行(加载驱动 + 处理结果) | 核心代码仅需 5 行(接口 + SQL),其余自动生成 |
| SQL 灵活性 | 可灵活写 SQL,但嵌入 Java 字符串易出错 | SQL 单独放 XML / 注解,语法高亮,易维护 |
| 结果映射 | 手动封装 ResultSet→实体类(容易漏字段) | 自动映射(字段名对应即可),支持自定义映射 |
| 分页 / 条件查询 | 手动拼分页 SQL、条件 SQL(繁琐) | 支持插件(PageHelper)、条件构造器,一行代码实现 |
| 企业使用率 | 几乎不用(仅教学场景) | 90% 以上企业后端项目在用 |
简单说:MyBatis 既保留了 SQL 的灵活性(想怎么查就怎么写),又解决了 JDBC 的繁琐问题,是 “新手能快速上手、老手能灵活扩展” 的数据库工具。
二、实操 1:Spring Boot 整合 MyBatis(5 分钟搭好 “库存系统”)
咱们以 “图书管理系统” 的book表为例,手把手整合 MyBatis,实现基础 CRUD,步骤超简单:
步骤 1:加依赖(装 “智能库存系统” 组件)
打开pom.xml,添加 MyBatis 和 MySQL 驱动依赖(衔接上一篇的数据库配置):
xml
<!-- MyBatis核心依赖 -->
<dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.3.1</version> <!-- 和Spring Boot 2.7.x兼容 -->
</dependency><!-- MySQL驱动(上一篇已加,确认存在即可) -->
<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope>
</dependency>
点 IDEA 右下角 “Import Changes”,依赖下载完成。
步骤 2:配 MyBatis(给 “库存系统” 设参数)
在application-dev.yml里添加 MyBatis 配置(衔接之前的数据库配置):
yaml
spring:# 数据库配置(上一篇已配,直接沿用)datasource:url: jdbc:mysql://localhost:3306/dev_book_db?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8username: rootpassword: 123456driver-class-name: com.mysql.cj.jdbc.Driver# MyBatis配置
mybatis:mapper-locations: classpath:mapper/*.xml # Mapper XML文件存放路径(核心)type-aliases-package: com.example.springbootdemo.entity # 实体类别名包(简化XML中的类名)configuration:map-underscore-to-camel-case: true # 开启驼峰命名自动转换(book_name→bookName)log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # 打印SQL日志(方便调试)
步骤 3:建目录结构(“库存系统” 文件分类)
按以下结构创建文件,避免文件乱放导致 MyBatis 扫不到:
plaintext
src/main/java/com/example/springbootdemo/
├─ entity/ # 实体类(对应数据库表)
│ └─ Book