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

相关推荐
yi0112 分钟前
DAY17: LeetCode 139|单词拆分:从“把单词删掉”到用 DP 记录合法切口
人工智能·笔记·python·算法·leetcode·动态规划
马剑威(威哥爱编程)5 分钟前
【AI全栈后端12-03】Spring Boot 用多模型路由把智能客服成本降下来
java·人工智能·spring boot
Java的搬运工6 分钟前
【无标题】
python·机器学习·docker·fastapi·模型部署·mlops·ai工程化
霸道流氓气质9 分钟前
AI模型幻觉检测与抑制完全指南:从规则引擎到RAG对比的Java生产级实战
java·开发语言·人工智能
云絮.12 分钟前
Spring MVC(二)
服务器·spring·mvc
niucloud-admin20 分钟前
JAVA V6 多商户商城 开发文档——手机端前端
java·开发语言·前端
云安全助手26 分钟前
自建接入VS聚合平台:企业 AI 调用的选型思路与迁移成本拆解
java·大数据·数据库·人工智能·ai大模型
小小张说故事26 分钟前
SHAP 可解释性入门:模型为什么这么判?Python 实战 + 4 个最常见的误读
后端·python·机器学习
樱花落木兰26 分钟前
SpringBoot + ECharts 后台数据统计报表模块实战
java·javascript·spring boot·ai·log4j·github·echarts
霸道流氓气质35 分钟前
Dify 可视化 LLM 应用开发平台完全指南:从Workflow编排到Java生产级集成实战
java·开发语言