使用 Spring JDBC DataSource 初始化
- 前言
- 正文
- 配置Spring JDBC的DataSource初始化
- application.properties
- application.yml
- 使用 data.sql 進行數據庫初始化
- application.properties
- application.yml
- application.properties
- application.yml
前言
項目中要使用一些數據庫,默認數據。所以需要做一些初始化操作
正文
配置Spring JDBC的DataSource初始化
如果您要執行自定義路徑下的SQL文件,可以通過配置Spring JDBC的DataSource初始化去執行特定路徑下的SQL文件:
@Configuration
public class DataSourceConfig {@Beanpublic DataSourceInitializer dataSourceInitializer(DataSource dataSource) {DataSourceInitializer initializer = new DataSourceInitializer();initializer.setDataSource(dataSource);initializer.setDatabasePopulator(databasePopulator());return initializer;}private DatabasePopulator databasePopulator() {ResourceDatabasePopulator populator = new ResourceDatabasePopulator();populator.addScript(new ClassPathResource("database/xxxx.sql"));return populator;}
}
確保將reformer.sql文件放至src/main/resources/database/目錄下。
application.properties
spring.datasource.schema=classpath*:database/xxxx.sql
application.yml
spring:datasource:schema: classpath*:database/xxxx.sql
這告訴Spring Boot去執行啟動時指定的SQL腳本。
使用 data.sql 進行數據庫初始化
使用 data.sql 進行數據庫初始化,找到資源文件夾 src/main/resources/。在該文件夾內創建一個名為 data.sql 的新文件。
vim src/main/resources/data.sql
INSERT INTO my_table (id, name, description) VALUES (1, 'Name 1', 'Description 1');
INSERT INTO my_table (id, name, description) VALUES (2, 'Name 2', 'Description 2');
application.properties
spring.datasource.initialization-mode=always
application.yml
spring:datasource:initialization-mode: always
確保沒有使用JPA的DDL Auto功能,如果您使用了Spring Data JPA,那么可能會有一個 ddl-auto 設置,它可以影響數據庫的初始化。默認當使用內嵌數據庫時,ddl-auto 設置為 create-drop.
但對于非內嵌數據庫,默認為 none。所以,如果您需要Spring Boot執行 data.sql
application.properties
spring.jpa.hibernate.ddl-auto=none
或者:
application.yml
spring:jpa:hibernate:ddl-auto: none
上述配置表示不使用Hibernate的DDL自動生成特性。