spring boot 項(xiàng)目中自動執(zhí)行 sql 語句
現(xiàn)在很多項(xiàng)目,都時興用容器化部署,不易報錯,部署方便都是這種部署方式的優(yōu)點(diǎn)。但對于 spring boot mysql 項(xiàng)目來說,如何在項(xiàng)目啟動前,就自動地創(chuàng)建數(shù)據(jù)庫和初始化sql腳本呢?本文提供一種解決辦法。
一、添加配置
1、配置介紹
在 properties 或 yaml 文件里面,添加以下配置(以 yaml 配置文件為例):
spring:
datasource:
schema:
- classpath:static/xxx.sql
initialization-mode: ALWAYS
添加以上兩個配置即可。
spring.datasource.schema:sql腳本的位置,classpath 路徑。
spring.datasource.initialization-mode:初始化模式,有三個選擇,分別是:
ALWAYS:始終初始化數(shù)據(jù)源。
EMBEDDED:僅初始化嵌入式數(shù)據(jù)源。
NEVER:不初始化數(shù)據(jù)源。
這里我選擇的初始化模式為 ALWAYS 。
2、sql 腳本說明
sql 腳本需要放在 resources/static 目錄下,配置里面指定 classpath 地址。
sql 執(zhí)行腳本部分內(nèi)容如下:
# 修改數(shù)據(jù)庫的編碼格式為utf8
ALTER DATABASE xxx character set utf8 collate utf8_general_ci;
# 切換到某數(shù)據(jù)庫下
USE xxx;
# 創(chuàng)建表
...(省略)
3、自動創(chuàng)建數(shù)據(jù)庫
在 spring.datasource.url 中,可以在指定數(shù)據(jù)庫的同時,設(shè)置數(shù)據(jù)庫如果不存在就自動創(chuàng)建,createDatabaseIfNotExist=true 。配置如下:
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://0.0.0.0:3306/xxx?createDatabaseIfNotExist=true&useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai&characterEncoding=utf8
username: root
password: xxx
二、總結(jié)
關(guān)于實(shí)現(xiàn)在項(xiàng)目啟動前,如何自動創(chuàng)建數(shù)據(jù)庫和初始化sql腳本,本文就提供了一種方法,全部是基于修改 spring boot 配置文件來實(shí)現(xiàn)的?,F(xiàn)在截一下全部的圖:
--end--
掃描下方二維碼
添加好友,備注【交流】 可私聊交流,也可進(jìn)資源豐富學(xué)習(xí)群
