[Spring Boot]初始化schema.sql和data.sql

  • 888
  • 0

Spring Boot初始化schema.sql和data.sql

配置application.properties
# 資料庫連線設定
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://172.16.4.203:3306/...
spring.datasource.username=root
spring.datasource.password=123456
spring.jpa.show-sql=true
spring.jpa.generate-ddl=true
spring.jpa.hibernate.ddl-auto=update
spring.datasource.platform=org.hibernate.dialect.MySQL57Dialect
# 初始化數據
spring.datasource.schema=classpath:schema.sql
spring.datasource.data=classpath:data.sql
spring.datasource.sql-script-encoding=utf-8
spring.datasource.initialization-mode=ALWAYS

啟動後,檢測配置spring.datasource.initialization-mode=ALWAYS,之後檢測spring.datasource.schema,再執行spring.datasource.data。
 schema.sql
-- 定義資料結構的SQL,每次運行都會執行,此檔不能為空,必須至少寫一句Sql語句。
show tables;
 data.sql
-- 每次服務啟動自動執行的腳本
-- Setting Tab
INSERT empNo(id,name,value,description) SELECT 1, 'name', 'admin','管理員' FROM dual WHERE not EXISTS (select 1 from empNo where empNo.id = 1);
INSERT empNo(id,name,value,description) SELECT 2, 'key', '123456','KEY' FROM dual WHERE not EXISTS (select 1 from empNo where empNo.id=2);


// spring.jpa.hibernate.ddl-auto=update
啟動 spring boot,依據 entity 類自動建表。
update:自動新增不存在的資料表,和欄位(不會影響資料)
create:自動新建不存在的資料表,和欄位(清空資料)
create-drop:同 create、drop 所有表
validate:自動校驗資料表字段是否映射到了 Entity 類屬性,不修改表
none:不動作