IDEA中Spring Boot项目接入MySQL数据库:从配置到CRUD实战

06-01 1578阅读

‌前言

MySQL作为最流行的开源关系型数据库,与Spring Boot的整合是企业级开发的标配。本文将手把手教你‌在IntelliJ IDEA中为Spring Boot项目接入MySQL数据库‌,涵盖‌依赖配置‌、‌实体类映射‌、‌JPA操作‌及‌常见避坑指南‌,助你快速实现数据持久化!


‌一、环境准备

1. ‌基础环境

  • 已安装IntelliJ IDEA并创建Spring Boot项目(参考前文)。
  • 本地安装MySQL 5.7+(推荐8.0),并创建数据库(如springboot_db)。

    2. ‌检查依赖

    • 确保项目包含Spring Web、Spring Data JPA和MySQL Driver依赖(可通过pom.xml添加)。

      ‌二、添加MySQL依赖

      ‌1. 修改pom.xml

      在中添加以下依赖:

      
          org.springframework.boot
          spring-boot-starter-data-jpa
      
      
      
          com.mysql
          mysql-connector-j
          runtime
      
      
      
          org.projectlombok
          lombok
          true
      
      

      ‌注意‌:Spring Boot 3.x默认使用MySQL 8.x驱动,若使用MySQL 5.x需指定驱动版本(如5.1.49)。


      ‌三、配置MySQL连接

      ‌1. 修改application.properties

      在src/main/resources/application.properties中添加数据库配置:

      # 数据源配置
      spring.datasource.url=jdbc:mysql://localhost:3306/springboot_db?useSSL=false&serverTimezone=UTC
      spring.datasource.username=root
      spring.datasource.password=123456
      spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
      # JPA配置
      spring.jpa.hibernate.ddl-auto=update
      spring.jpa.show-sql=true
      spring.jpa.properties.hibernate.format_sql=true
      
      • ‌关键参数解释‌:
        • spring.jpa.hibernate.ddl-auto=update:启动时自动更新表结构(可选create、none)。
        • useSSL=false:禁用SSL(本地开发可关闭)。
        • serverTimezone=UTC:统一时区,避免时间差问题。

          ‌2. 验证配置

          启动项目,若控制台输出以下日志,说明数据库连接成功:

          HikariPool-1 - Start completed
          

          ‌四、创建实体类与Repository

          ‌1. 定义实体类(User)

          package com.example.demo.entity;
          import jakarta.persistence.*;
          import lombok.Data;
          @Data
          @Entity
          @Table(name = "user") // 指定表名
          public class User {
              @Id
              @GeneratedValue(strategy = GenerationType.IDENTITY)
              private Long id;
              
              @Column(nullable = false, unique = true)
              private String username;
              
              @Column(nullable = false)
              private String password;
              
              private String email;
          }
          
          • ‌注解说明‌:
            • @Entity:标记为JPA实体。
            • @Table:指定映射的表名。
            • @Data:Lombok注解,自动生成getter/setter。

              ‌2. 创建Repository接口

              package com.example.demo.repository;
              import com.example.demo.entity.User;
              import org.springframework.data.jpa.repository.JpaRepository;
              public interface UserRepository extends JpaRepository {
                  // 自定义查询方法(按用户名查找)
                  User findByUsername(String username);
              }
              

              ‌五、编写Service与Controller

              ‌1. 实现Service层

              package com.example.demo.service;
              import com.example.demo.entity.User;
              import com.example.demo.repository.UserRepository;
              import org.springframework.beans.factory.annotation.Autowired;
              import org.springframework.stereotype.Service;
              @Service
              public class UserService {
                  @Autowired
                  private UserRepository userRepository;
                  public User saveUser(User user) {
                      return userRepository.save(user);
                  }
                  public User findUserByUsername(String username) {
                      return userRepository.findByUsername(username);
                  }
              }
              

              ‌2. 编写RESTful Controller

              package com.example.demo.controller;
              import com.example.demo.entity.User;
              import com.example.demo.service.UserService;
              import org.springframework.beans.factory.annotation.Autowired;
              import org.springframework.web.bind.annotation.*;
              @RestController
              @RequestMapping("/api/users")
              public class UserController {
                  @Autowired
                  private UserService userService;
                  @PostMapping
                  public User createUser(@RequestBody User user) {
                      return userService.saveUser(user);
                  }
                  @GetMapping("/{username}")
                  public User getUser(@PathVariable String username) {
                      return userService.findUserByUsername(username);
                  }
              }
              

              ‌六、测试与验证

              ‌1. 启动应用

              运行启动类DemoApplication,观察控制台是否生成建表SQL:

              create table user (
                  id bigint not null auto_increment,
                  email varchar(255),
                  password varchar(255) not null,
                  username varchar(255) not null unique,
                  primary key (id)
              );
              

              ‌2. 使用Postman测试API

              • ‌新增用户‌(POST请求):

                URL:http://localhost:8080/api/users

                Body(JSON):

                {
                  "username": "csdn_user",
                  "password": "123456",
                  "email": "csdn@example.com"
                }
                
              • ‌查询用户‌(GET请求):

                URL:http://localhost:8080/api/users/csdn_user


                ‌七、常见问题与解决方案

                ‌Q1:数据库连接失败(Access denied)

                • 原因‌:用户名/密码错误,或用户无权限访问数据库。
                • ‌解决‌:
                  • 检查application.properties中的username和password。
                  • 在MySQL中授权用户:
                    GRANT ALL PRIVILEGES ON springboot_db.* TO 'root'@'localhost';
                    FLUSH PRIVILEGES;
                    

                    ‌Q2:驱动类未找到(Driver class not found)

                    • 原因‌:MySQL驱动版本与配置不匹配。
                    • ‌解决‌:
                      • 检查spring.datasource.driver-class-name是否为com.mysql.cj.jdbc.Driver(MySQL 8.x)。
                      • 确认pom.xml中MySQL依赖未冲突。

                        Q3:时区错误(ServerTimezone not configured)

                        • ‌解决‌:在JDBC URL中添加&serverTimezone=Asia/Shanghai(或UTC)。

                          ‌Q4:表不存在(Table ‘springboot_db.user’ doesn’t exist)

                          • 解决‌:
                            • 确保spring.jpa.hibernate.ddl-auto=update。
                            • 检查实体类@Table(name="user")是否与数据库表名一致。

                              总结

                              通过Spring Data JPA,开发者无需编写SQL即可实现MySQL数据库的CRUD操作。本文从配置到实战演示了完整的接入流程,并针对常见错误提供解决方案。

                              IDEA中Spring Boot项目接入MySQL数据库:从配置到CRUD实战
                              (图片来源网络,侵删)
                              IDEA中Spring Boot项目接入MySQL数据库:从配置到CRUD实战
                              (图片来源网络,侵删)
                              IDEA中Spring Boot项目接入MySQL数据库:从配置到CRUD实战
                              (图片来源网络,侵删)
免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们。

目录[+]

取消
微信二维码
微信二维码
支付宝二维码