Spring Boot项目连接MySQL数据库及CRUD操作示例

概述

在Spring Boot项目中集成MySQL数据库是常见的开发需求。本文将演示如何快速配置MySQL数据库连接,并通过JPA实现基本的增删改查(CRUD)操作。


环境准备

  • JDK 1.8+
  • MySQL 5.7+(推荐8.0+)
  • Spring Boot 2.7.x+
  • IDE(IntelliJ IDEA/Eclipse)

实现步骤

1. 创建Spring Boot项目

通过Spring Initializr或IDE创建项目,选择以下依赖:

  • Spring Web
  • Spring Data JPA
  • MySQL Driver

2. 添加依赖(pom.xml)

xml 复制代码
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <scope>runtime</scope>
    </dependency>
</dependencies>

3. 配置数据库连接(application.properties)

properties 复制代码
spring.datasource.url=jdbc:mysql://localhost:3306/springboot_db?useSSL=false&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=123456

spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=update
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL8Dialect

4. 创建实体类

java 复制代码
@Entity
@Table(name = "users")
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    
    @Column(nullable = false)
    private String name;
    
    @Column(unique = true)
    private String email;
    
    // 构造器/getter/setter省略(需实际添加)
}

5. 创建Repository接口

java 复制代码
public interface UserRepository extends JpaRepository<User, Long> {
}

6. 实现Service层

java 复制代码
@Service
public class UserService {
    @Autowired
    private UserRepository userRepository;

    public User createUser(User user) {
        return userRepository.save(user);
    }

    public List<User> getAllUsers() {
        return userRepository.findAll();
    }

    public Optional<User> getUserById(Long id) {
        return userRepository.findById(id);
    }

    public User updateUser(User user) {
        return userRepository.save(user);
    }

    public void deleteUser(Long id) {
        userRepository.deleteById(id);
    }
}

7. 创建Controller

java 复制代码
@RestController
@RequestMapping("/api/users")
public class UserController {
    @Autowired
    private UserService userService;

    @PostMapping
    public User createUser(@RequestBody User user) {
        return userService.createUser(user);
    }

    @GetMapping
    public List<User> getAllUsers() {
        return userService.getAllUsers();
    }

    @GetMapping("/{id}")
    public Optional<User> getUserById(@PathVariable Long id) {
        return userService.getUserById(id);
    }

    @PutMapping("/{id}")
    public User updateUser(@PathVariable Long id, @RequestBody User user) {
        user.setId(id);
        return userService.updateUser(user);
    }

    @DeleteMapping("/{id}")
    public void deleteUser(@PathVariable Long id) {
        userService.deleteUser(id);
    }
}

测试API

  • 创建用户:POST /api/users
  • 获取所有用户:GET /api/users
  • 获取单个用户:GET /api/users/{id}
  • 更新用户:PUT /api/users/{id}
  • 删除用户:DELETE /api/users/{id}

常见问题排查

  1. 数据库连接失败

    • 检查MySQL服务是否启动
    • 验证用户名/密码是否正确
    • 确保数据库springboot_db已存在
  2. 表未自动创建

    • 检查ddl-auto配置是否为update
    • 确认实体类正确使用JPA注解
  3. 时区问题

    • 在连接URL中添加&serverTimezone=Asia/Shanghai

总结

通过Spring Data JPA可以快速实现数据库操作。实际开发中可结合DTO、异常处理等功能完善项目。建议使用Postman测试接口,并通过MySQL Workbench验证数据变更。


希望这篇教程能帮助您快速上手Spring Boot与MySQL的集成开发!如有疑问欢迎留言讨论。

相关推荐
wuqingshun314159几秒前
经典算法 最长单调递增子序列
java·c++·算法·蓝桥杯·机器人
IT技术员3 分钟前
【Java学习】动态代理有哪些形式?
java·python·学习
2401_897930065 分钟前
Maven 依赖范围(Scope)详解
java·maven
q_q王8 分钟前
本地知识库工具FASTGPT的安装与搭建
python·大模型·llm·知识库·fastgpt
lanboAI8 分钟前
基于卷积神经网络的蔬菜水果识别系统,resnet50,mobilenet模型【pytorch框架+python源码】
pytorch·python·cnn
一刀到底21115 分钟前
ai agent(智能体)开发 python3基础8 网页抓取中 selenium 和 Playwright 区别和联系
人工智能·python
豆沙沙包?20 分钟前
2025年- H13-Lc120-189.轮转数组(普通数组)---java版
java·算法·排序算法
剑哥在胡说23 分钟前
Python三大Web框架对比:Django、Flask、Tornado的异步实现方式详解
数据库·python·django·flask·tornado
随心............38 分钟前
MySQL多表操作
数据库·mysql
purrrew40 分钟前
【Java EE初阶】多线程(二)
java·java-ee