1.通过配置文件进行初始化
mode
:控制 SQL 初始化的模式,取值可以是:
never
:禁用初始化。embedded
:仅在嵌入式数据库中初始化。always
:每次应用启动时都初始化。
spring:sql:init:platform: mysqlmode: alwaysschema-locations: classpath:db/script.sqldata-locations: classpath:db/data.sql
-- script.sql
CREATE TABLE IF NOT EXISTS users (id INT AUTO_INCREMENT PRIMARY KEY,username VARCHAR(50) NOT NULL,password VARCHAR(100) NOT NULL,email VARCHAR(100) NOT NULL,enabled BOOLEAN NOT NULL
) ;CREATE TABLE IF NOT EXISTS roles (id INT AUTO_INCREMENT PRIMARY KEY,name VARCHAR(50) NOT NULL
) ;-- data.sql
INSERT INTO roles (name) VALUES ('ROLE_USER'), ('ROLE_ADMIN') ;INSERT INTO users (username, password, email, enabled) VALUES
('user1', '123456', 'user1@example.com', true),
('user2', '123456', 'user2@example.com', true),
('admin', 'admin123', 'admin@example.com', true) ;
当运行 Spring Boot 应用程序时,它会自动创建数据库表,并使用提供的 SQL 脚本填充初始数据。
2.通过测试用例进行初始化
@SpringBootTest
@AutoConfigureTestDatabase
public class AppTests {@Test@Sql({"/data.sql", "/cleanup.sql"})public void init() {}
}