国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

SpringBoot工程啟動時自動創(chuàng)建數(shù)據(jù)庫、數(shù)據(jù)表

這篇具有很好參考價值的文章主要介紹了SpringBoot工程啟動時自動創(chuàng)建數(shù)據(jù)庫、數(shù)據(jù)表。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

一,序

針對Java工程啟動時自動創(chuàng)建數(shù)據(jù)庫、數(shù)據(jù)表的需求

對 java、springmvc工程,我們需要自己動手去實現(xiàn)創(chuàng)建數(shù)據(jù)表、表數(shù)據(jù),具體請移步參閱:JAVA工程啟動時自動創(chuàng)建數(shù)據(jù)庫、數(shù)據(jù)表

下面我們來探討在Springboot下怎么去實現(xiàn)

二,自動創(chuàng)建數(shù)據(jù)庫

1. 數(shù)據(jù)源配置

我們知道,springboot工程配置數(shù)據(jù)源一般采用yaml或properties文件的方式
典型的例子如下
application.yml

spring:
  datasource:
    url: ${druid.url}
    username: ${druid.username}
    password: ${druid.password}
    driverClassName: ${druid.driverClassName}
    type: com.alibaba.druid.pool.DruidDataSource
    sqlScriptEncoding: utf-8
    initializationMode: always
    schema: classpath:sql/schema.sql
    data: classpath:sql/data.sql
    continueOnError: true

這里yaml文件引用了properties文件

druid.url=jdbc:mysql://127.0.0.1:3306/hello?useSSL=false&serverTimezone=Asia/Shanghai&rewriteBatchedStatements=true
druid.driverClassName=com.mysql.cj.jdbc.Driver
druid.username=root
druid.password=root123
druid.filters=stat
druid.initialSize=2
druid.maxActive=20
druid.maxWait=60000
druid.timeBetweenEvictionRunsMillis=60000
druid.minEvictableIdleTimeMillis=300000
druid.validationQuery=SELECT 1
druid.testWhileIdle=true
druid.testOnBorrow=false
druid.testOnReturn=false
druid.poolPreparedStatements=false
druid.maxPoolPreparedStatementPerConnectionSize=200

2. 修改支持數(shù)據(jù)庫創(chuàng)建

修改properties文件druid.url參數(shù)添加&createDatabaseIfNotExist=true
注意這里配置的druid.username一定要有建庫權(quán)限,否則數(shù)據(jù)庫不存在的前提下,會創(chuàng)建失敗。

druid.url=jdbc:mysql://127.0.0.1:3306/hello?useSSL=false&serverTimezone=Asia/Shanghai&rewriteBatchedStatements=true&createDatabaseIfNotExist=true
druid.driverClassName=com.mysql.cj.jdbc.Driver
druid.username=root
druid.password=root123

三,自動創(chuàng)建數(shù)據(jù)庫表以及數(shù)據(jù)

1. 準備DDL、DML語句

1.)典型DDL語句

DDL是數(shù)據(jù)定義語言,主要用來對數(shù)據(jù)庫表結(jié)構(gòu)進行操作,不涉及具體數(shù)據(jù),一般保存在 schema.sql

USE `hello`;

DROP TABLE IF EXISTS `boot_log`;
CREATE TABLE IF NOT EXISTS `boot_log` ( 
  `id`  bigint NOT NULL AUTO_INCREMENT ,
  `event_id` varchar(50) ,
  `event_date` datetime ,
  `thread` varchar(255) ,
  `class` varchar(255) ,
  `function` varchar(255) ,
  `message` varchar(255) ,
  `exception` text,
  `level` varchar(255) ,
  `time` datetime,
PRIMARY KEY (id)
);

DROP TABLE IF EXISTS `user`;
CREATE TABLE IF NOT EXISTS `user` (
  `id` bigint NOT NULL AUTO_INCREMENT,
  `username` varchar(20) DEFAULT NULL,
  `password` varchar(20) DEFAULT NULL,
  PRIMARY KEY (`id`)
);

2.)典型DML語句

DML是數(shù)據(jù)操作語言,主要用來對數(shù)據(jù)庫里的數(shù)據(jù)進行操作,涉及具體數(shù)據(jù),一般保存在data.sql

INSERT INTO `user` VALUES ('1', 'username_001', '111111');
INSERT INTO `user` VALUES ('2', 'username_002', '222222');

--重復(fù)插入,模擬異常
INSERT INTO `user` VALUES ('1', 'username_001', '123456');

INSERT INTO `user` VALUES ('3', 'username_003', '333333');
INSERT INTO `user` VALUES ('4', 'username_004', '444444');

2. 設(shè)置初始化參數(shù)

觀察上面的application.yml文件,涉及數(shù)據(jù)庫初始化的參數(shù)主要有:

    sqlScriptEncoding: utf-8
    initializationMode: always
    schema: classpath:sql/schema.sql
    data: classpath:sql/data.sql
    continueOnError: true
參數(shù) 說明
sqlScriptEncoding 編碼
initializationMode 初始化行為,取值A(chǔ)LWAYS、EMBEDDED、NEVER
schema 指定DDL腳本位置
schemaUsername 可選,指定DDL用戶名
schemaPassword 可選,指定DDL用戶密碼
data 指定DML位置
dataUsername 可選,指定DML用戶名
dataPassword 可選,指定DML用戶密碼
continueOnError 出錯是否繼續(xù)

注意以上說明,是針對springboot2.5.0之前版本,springboot2.5.0之后版本
配置變成如下:

spring:
  datasource:
    username: root
    password: root123
    url: jdbc:mysql://localhost:3306/testdb?autoReconnect=true&useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&createDatabaseIfNotExist=true
  sql:
    init:
      mode: ALWAYS
      encoding: utf-8
      username: root
      password: root123
      continueOnError: true
      schemaLocations: classpath:schema.sql
      dataLocations: classpath:data.sql

大家自行研究測試!

四、源碼傳送

https://gitee.com/00fly/effict-side/tree/master/springboot-log

有任何問題和建議,都可以向我提問討論,大家一起進步,謝謝!

–over–文章來源地址http://www.zghlxwxcb.cn/news/detail-781972.html

到了這里,關(guān)于SpringBoot工程啟動時自動創(chuàng)建數(shù)據(jù)庫、數(shù)據(jù)表的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包