IDEA中Spring Boot项目接入MySQL数据库:从配置到CRUD实战
前言
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操作。本文从配置到实战演示了完整的接入流程,并针对常见错误提供解决方案。
(图片来源网络,侵删)(图片来源网络,侵删)(图片来源网络,侵删)
- 解决:
- 解决:在JDBC URL中添加&serverTimezone=Asia/Shanghai(或UTC)。
- 新增用户(POST请求):
- 注解说明:
- 关键参数解释:
- 确保项目包含Spring Web、Spring Data JPA和MySQL Driver依赖(可通过pom.xml添加)。
免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们。