springboot怎么配置数据库

在 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. 高级配置:多数据源

如果你的应用需要同时连接两个或多个不同的数据库,配置会复杂一些,需要手动配置多个 DataSourceEntityManager 等。

核心步骤:

  1. 在 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
  2. 使用 @Configuration 和 @Bean 注解创建两个配置类(或一个),分别配置各自的数据源、事务管理器和 EntityManagerFactory

  3. 使用 @Primary 注解指定默认的数据源。

  4. 在操作不同数据库的 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

总结

  1. 加依赖:在 pom.xml 中添加 JDBC 和数据库驱动依赖。

  2. 写配置:在 application.properties/application.yml 中配置 spring.datasource.urlusernamepassword

  3. 启动验证:启动应用,若无报错即连接成功。

Spring Boot 的自动配置功能使得数据库连接变得异常简单,你只需关注最核心的连接信息即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值