1.應用背景
在做項目的過程中,我們經常會習慣於搭建一個通用的框架,內部簡單實現了自己的一些邏輯和一些基礎的表,例如用戶,角色,權限表,當我們快速開發一個項目時,我們希望只用啟動我們的通用框架,就能快速搭建一套基礎環境,這里可以使用springboot2.0以上版本提供的jdbc初始化數據庫表。
2.在application.yml中加入如下配置
spring.datasource下有兩個屬性 schme、data,其中schema為表初始化語句,data為數據初始化,默認加載schema.sql與data.sql。腳本位置可以通過spring.datasource.schema 與spring.datasource.data 來改變。
server: # 獲取端口,沒有就用默認的端口port port: ${port:8083} spring: application: #本地測試 name: validator datasource: type: com.alibaba.druid.pool.DruidDataSource driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:33306/jiulong_blog?characterEncoding=utf-8&serverTimezone=Asia/Shanghai username: root password: 123456 # 執行完畢,需要改為never,否則對已存在的表,報錯(從 always 改為 never ) initialization-mode: always #注意書寫方式,-后面有一個空格,classpath:name.sql中間卻沒有空格 #schema: classpath:sql/jiulong_blog.sql#只有一個sql文件的寫法 #有多個sql文件時的寫法 schema: - classpath:sql/jiulong_blog.sql - classpath:sql/init.sql #初始化的數據 data: classpath:data-mysql.sql # Initialize the datasource with available DDL and DML scripts. continue-on-error: false sql-script-encoding: utf-8 separator: ; initialSize: 5 maxWait: 60000 timeBetweenEvictionRunsMillis: 60000 minEvictableIdleTimeMillis: 300000 validationQuery: SELECT 1 FROM DUAL testWhileIdle: true testOnBorrow: false testOnReturn: false poolPreparedStatements: true connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000 useGlobalDataSourceStat: true
3.工程結構如圖