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的集成开发!如有疑问欢迎留言讨论。

相关推荐
-XWB-25 分钟前
【LLM】使用MySQL MCP Server让大模型轻松操作本地数据库
人工智能·python·自然语言处理
小萌新上大分25 分钟前
SpringCloudGateWay
java·开发语言·后端·springcloud·springgateway·cloudalibaba·gateway网关
PacosonSWJTU1 小时前
python基础-13-处理excel电子表格
开发语言·python·excel
直视太阳2 小时前
springboot+easyexcel实现下载excels模板下拉选择
java·spring boot·后端
zkmall2 小时前
HikariCP 源码核心设计解析与 ZKmall开源商城场景调优实践
spring boot·开源
Code成立2 小时前
《深入理解Java虚拟机:JVM高级特性与最佳实践(第3版)》第2章 Java内存区域与内存溢出异常
java·jvm·jvm内存模型·jvm内存区域
小军要奋进2 小时前
httpx模块的使用
笔记·爬虫·python·学习·httpx
Tee xm2 小时前
清晰易懂的跨平台 MySQL 安装与配置教程
linux·windows·mysql·macos·安装
baobao17676408302 小时前
Mysql 数据库编程技术01
数据库·mysql·oracle
一 乐2 小时前
实验室预约|实验室预约小程序|基于Java+vue微信小程序的实验室预约管理系统设计与实现(源码+数据库+文档)
java·数据库·微信小程序·小程序·毕业设计·论文·实验室预约小程序