SpringBoot中配置起動時的數據庫初始化角本


一、簡介

  我們使用SpringBoot + JPA時,需要程序在啟動時執行數據表的初始化或者數據庫記錄的初始化。一般數據表的初始化可以通過在Spring Boot的application.properties中進行配置spring.jpa.hibernate.ddl-auto=update來實現。但是數據記錄的初始化,該怎么做呢?

  下面,我們將使用SpringBoot2.0.4Release版本做實驗

二、配置application.properties

  連接字符串角配置:

#連接字符串
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://172.16.4.203:3306/mydatabase?characterEncoding=utf8&useUnicode=true&useSSL=false&serverTimezone=Asia/Shanghai
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

 

三、說明

  因為SpringBoot在啟動時,只有檢測到spring.datasource.initialization-mode=ALWAYS配置,后再檢測spring.datasource.schema之后,且配置的sql角本命令不為空,才會去執行schema和spring.datasource.data。因此需要在scheme.sql中隨便寫一句sql語句。

  schema.sql

-- 這里是定義數據結構的SQL,每次運行都會執行,此文件不能為空,必須至少寫一句Sql語句。
show tables;

  data.sql

-- 下列角本是同步服務系統每次啟動會自動執行的角本。編寫時,請注意確保角本中不會變更現有記錄。

-- SettingTab
INSERT setting_tab(id,name,value,description) SELECT 1, 'name', 'admin','用戶名' FROM dual WHERE not EXISTS (select 1 from setting_tab where setting_tab.id = 1);
INSERT setting_tab(id,name,value,description) SELECT 2, 'key', '123456','密鑰' FROM dual WHERE not EXISTS (select 1 from setting_tab where setting_tab.id=2);

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM