前言
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依赖
修改pom.xml
在<dependencies>中添加以下依赖:
<!-- spring data jpa -->
<dependency>
<groupid>org.springframework.boot</groupid>
<artifactid>spring-boot-starter-data-jpa</artifactid>
</dependency>
<!-- mysql驱动(版本需与本地mysql一致) -->
<dependency>
<groupid>com.mysql</groupid>
<artifactid>mysql-connector-j</artifactid>
<scope>runtime</scope>
</dependency>
<!-- 可选:lombok简化代码 -->
<dependency>
<groupid>org.projectlombok</groupid>
<artifactid>lombok</artifactid>
<optional>true</optional>
</dependency>
注意: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, long> {
// 自定义查询方法(按用户名查找)
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中为springboot项目接入mysql数据库的详细指南的文章就介绍到这了,更多相关idea springboot接入mysql数据库内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论