在SpringBoot应用中如何做到数据库迁移和数据初始化?
在 Spring Boot 应用中,我们通常使用 Liquibase 或 Flyway 这样的数据库迁移工具来管理数据库的改变(包括数据初始化)。这些工具可以帮助我们自动化和版本控制数据库的改变,从而使数据库的状态和应用的版本保持一致。
以下是如何在 Spring Boot 中使用 Flyway 进行数据库迁移和数据初始化的步骤:
- 添加依赖:首先,在
pom.xml
文件中添加 Flyway 的依赖。
<dependency>
<groupId>org.flywaydb</groupId>
<artifactId>flyway-core</artifactId>
</dependency>
- 配置数据库连接:然后,在
application.properties
文件中配置数据库的连接信息。
spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
spring.datasource.password=root
spring.flyway.locations=classpath:db/migration
- 创建迁移脚本:在
src/main/resources/db/migration
目录下创建 SQL 脚本文件。文件的命名需要遵循一定的规则,例如V1__Create_person_table.sql
,V2__Add_people.sql
。其中,V1、V2 是版本号,后面的部分是描述。脚本中可以写 SQL 语句来改变数据库的结构,也可以插入数据来初始化数据库。
例如,V1__Create_person_table.sql
文件内容如下:
CREATE TABLE person (
id INT PRIMARY KEY,
name VARCHAR(100) NOT NULL
);
V2__Add_people.sql
文件内容如下:
INSERT INTO person (id, name) VALUES (1, 'John Doe');
- 运行应用:当我们运行应用时,Flyway 会自动执行 SQL 脚本来迁移数据库。如果数据库已经处于最新的状态,Flyway 就不会做任何事情。
通过这种方式,我们可以很容易地管理数据库的改变,并且确保每个环境中的数据库都处于一致的状态。