在 Spring Boot 中配置数据库非常简便,其核心理念是 “约定大于配置”。你只需要提供必要的信息,Spring Boot 会自动完成大部分配置。
下面我将以配置 MySQL 为例,详细讲解几种配置方法。
1. 核心步骤
步骤一:添加数据库驱动依赖
在项目的 pom.xml (Maven) 或 build.gradle (Gradle) 文件中添加你所需数据库的 JDBC 驱动依赖。
Maven (pom.xml) - MySQL 示例:
xml
<dependencies>
<!-- Spring Boot JDBC 核心依赖,包含自动配置、事务管理等 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
<!-- 如果你用 JPA -->
</dependency>
<!-- 或者 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
<!-- 如果你只用基础的 JDBC -->
</dependency>
<!-- MySQL 数据库驱动 -->
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<scope>runtime</scope>
</dependency>
</dependencies>
Gradle (build.gradle) - MySQL 示例:
groovy
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
// 或者
// implementation 'org.springframework.boot:spring-boot-starter-jdbc'
runtimeOnly 'com.mysql:mysql-connector-j'
}
注意: 请根据你的数据库类型更换驱动。
-
PostgreSQL:
org.postgresql:postgresql -
Oracle:
com.oracle.database.jdbc:ojdbc11(需从Oracle官方获取) -
H2 (内存数据库):
com.h2database:h2
步骤二:配置数据库连接信息
在 src/main/resources/application.properties 或 src/main/resources/application.yml 文件中配置数据源。
使用 application.properties (推荐初学者):
properties
# 数据源的基本配置 spring.datasource.url=jdbc:mysql://localhost:3306/your_database_name?useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true spring.datasource.username=your_username spring.datasource.password=your_password spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver # HikariCP 连接池配置 (Spring Boot 2.x 默认) spring.datasource.hikari.connection-timeout=20000 spring.datasource.hikari.maximum-pool-size=10 # JPA 相关配置 (如果用了 spring-boot-starter-data-jpa) spring.jpa.show-sql=true spring.jpa.hibernate.ddl-auto=update spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQLDialect
使用 application.yml (更清晰,支持层次结构):
yaml
spring:
datasource:
url: jdbc:mysql://localhost:3306/your_database_name?useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true
username: your_username
password: your_password
driver-class-name: com.mysql.cj.jdbc.Driver
hikari:
connection-timeout: 20000
maximum-pool-size: 10
jpa:
show-sql: true
hibernate:
ddl-auto: update
properties:
hibernate:
dialect: org.hibernate.dialect.MySQLDialect
关键配置项解释:
-
spring.datasource.url: 数据库连接字符串。localhost:3306是数据库地址和端口,your_database_name是你的数据库名。 -
spring.datasource.username&password: 登录数据库的用户名和密码。 -
spring.datasource.driver-class-name: JDBC 驱动类名。Spring Boot 通常可以根据 URL 自动推断,可省略。 -
spring.jpa.hibernate.ddl-auto: Hibernate 的自动建表策略。-
validate: 启动时验证表结构,不一致则报错。 -
update: (常用) 启动时根据实体类更新表结构(增删列),不会删除表或数据。 -
create: 每次启动删除表并重新创建(切勿在生产环境使用)。 -
create-drop: 同create,且在程序关闭时删除表。 -
none: 不做任何操作。
-
2. 测试连接
配置完成后,最简单的方法是直接启动应用。如果控制台没有抛出 DataSource 或连接相关的异常,并且看到类似以下的日志,通常意味着数据库连接成功:
text
HHH000412: Hibernate Core {#Version}
HHH000206: hibernate.properties not found
HCANN000001: Hibernate Commons Annotations {#Version}
HHH000400: Using dialect: org.hibernate.dialect.MySQLDialect
Initialized JPA EntityManagerFactory successfully.
你也可以编写一个简单的测试类来验证:
java
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException;
@SpringBootTest
public class DatabaseConnectionTest {
@Autowired
private DataSource dataSource;
@Test
void testConnection() throws SQLException {
// 获取一个数据库连接
try (Connection connection = dataSource.getConnection()) {
// 如果成功获取连接且没有抛出异常,则说明配置成功
System.out.println("数据库连接成功!");
System.out.println("Connection: " + connection);
System.out.println("Database: " + connection.getMetaData().getDatabaseProductName());
}
}
}
3. 高级配置:多数据源
如果你的应用需要同时连接两个或多个不同的数据库,配置会复杂一些,需要手动配置多个 DataSource、EntityManager 等。
核心步骤:
-
在
application.yml中为每个数据源定义不同的配置前缀。yaml
spring: datasource: primary: jdbc-url: jdbc:mysql://host1:3306/db1 username: user1 password: pass1 driver-class-name: com.mysql.cj.jdbc.Driver secondary: jdbc-url: jdbc:mysql://host2:3306/db2 username: user2 password: pass2 driver-class-name: com.mysql.cj.jdbc.Driver -
使用
@Configuration和@Bean注解创建两个配置类(或一个),分别配置各自的数据源、事务管理器和EntityManagerFactory。 -
使用
@Primary注解指定默认的数据源。 -
在操作不同数据库的 Repository 接口上,使用
@EntityManager指定具体的数据源。
(多数据源配置是一个相对复杂的主题,如果需要,可以提出专门的问题。)
4. 使用内存数据库(用于测试/演示)
对于测试或demo,使用H2等内存数据库非常方便,无需安装真实的数据库服务器。
依赖:
xml
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>
配置 (application.properties):
properties
# H2 内存数据库配置 spring.datasource.url=jdbc:h2:mem:testdb spring.datasource.driverClassName=org.h2.Driver spring.datasource.username=sa spring.datasource.password=password # 启用 H2 控制台,可以在浏览器中访问 http://localhost:8080/h2-console 查看数据库 spring.h2.console.enabled=true spring.h2.console.path=/h2-console # JPA 配置 spring.jpa.database-platform=org.hibernate.dialect.H2Dialect spring.jpa.hibernate.ddl-auto=create-drop
总结
-
加依赖:在
pom.xml中添加 JDBC 和数据库驱动依赖。 -
写配置:在
application.properties/application.yml中配置spring.datasource.url、username、password。 -
启动验证:启动应用,若无报错即连接成功。
Spring Boot 的自动配置功能使得数据库连接变得异常简单,你只需关注最核心的连接信息即可。
8667

被折叠的 条评论
为什么被折叠?



