SpringBoot系列---【初始化項目時,如何實現自動初始化數據庫的表?】


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.工程結構如圖

 


免責聲明!

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



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