MySQL判斷視圖是否存在以及SpringBoot2.x項目啓動,自動執行創表和創視圖的mysql腳本

目錄

MySQL判斷視圖是否存在

SpringBoot2.x項目啓動,自動執行建表語句

1.創建存放腳本的目錄

2.編寫創表和創視圖的sql腳本

3.YML配置和指定項目啓動執行的sql腳本路徑


MySQL判斷視圖是否存在

mysql創建視圖判斷是否存在覈心語句:

CREATE OR REPLACE VIEW 

創建視圖測試腳本sql

CREATE OR REPLACE VIEW  `v_sbox_detail` AS
(SELECT sbox.*,sline.`name` AS sline_name,sline.`start_time` AS sline_start_time,sline.`end_time` AS sline_end_time  FROM stream_box  AS sbox
LEFT JOIN stream_line AS sline
ON sbox.`stream_line_id`  = sline.`stream_line_id` );

mysql判斷視圖是否存在並刪除語法:

DROP VIEW IF EXISTS  v_user_org_xxxxx;

 

SpringBoot2.x項目啓動,自動執行建表語句

1.創建存放腳本的目錄

先在resources文件夾下,建一個名字叫sql的文件夾,再新建一個xx.sql的腳本

 

2.編寫創表和創視圖的sql腳本

僅供參考的sql腳本樣例:



SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------
-- Table structure for request_fail_tb
-- ----------------------------

-- ----------------------------
-- Table structure for tab_set
-- ----------------------------

CREATE TABLE IF NOT EXISTS  `tab_set` (
  `set_id` varchar(50) NOT NULL,
  `req_id` varchar(50) DEFAULT NULL COMMENT '需求編號',
  `spec_id` varchar(50) DEFAULT NULL COMMENT '規格編號',
  `capability` double unsigned DEFAULT '0' COMMENT '總產能',
  ...
  ...具體內容省略
  `create_user` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '創建人',
  `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '創建時間',
  `modify_user` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '修改人',
  `modify_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '修改時間',
  PRIMARY KEY (`set_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
-- Table structure for tab_stream
-- ----------------------------
CREATE TABLE IF NOT EXISTS  `tab_stream` (
  `stream_id` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
  `line_id` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
  `start_time` datetime DEFAULT NULL,
  `end_time` datetime DEFAULT NULL,
   ...
   ...具體內容省略
  `create_user` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '創建人',
  `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '創建時間',
  `modify_user` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '修改人',
  `modify_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '修改時間',
  PRIMARY KEY (`stream_id`),
  KEY `stream_line` (`line_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;


-- ----------------------------
-- View structure for v_sbox_detail
-- ----------------------------
CREATE OR REPLACE VIEW  `v_sbox_detail` AS
(SELECT sbox.*,sline.`name` AS sline_name,sline.`start_time` AS sline_start_time,sline.`end_time` AS sline_end_time  FROM stream_box  AS sbox
LEFT JOIN stream_line AS sline
ON sbox.`stream_line_id`  = sline.`stream_line_id` );

 

3.YML配置和指定項目啓動執行的sql腳本路徑

項目啓動自動執行創表及創視圖的yml核心配置

#spring基礎配置
spring:
  application:
    name: xxxname
  profiles:
    active: dev    #切換開發環境和測試環境,dev爲開發環境,prod爲測試環境
  servlet:
    multipart:
      max-file-size: 100MB  #上傳文件最大值
  sleuth:
    sampler:
      probability: 1.0   #2.0後percentage改爲probability
  datasource:
    name: xxx   #數據庫名
    type: com.alibaba.druid.pool.DruidDataSource
    initialization-mode: always   #必須配置爲always纔會自動執行mysql腳本
    #項目啓動後執行建表語句   sql腳本路徑指定
    schema:
      - classpath:sql/xxx腳本.sql
    sql-script-encoding: utf-8
    platform: mysql
    druid:
      #監控統計攔截的filters
      filters: stat,wall,slf4j
      driver-class-name: com.mysql.jdbc.Driver
      url: jdbc:mysql://localhost:3306/xxxabc?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&serverTimezone=UTC&useSSL=false
      username: root
      password: aaabb
      initial-size: 1   #配置初始化大小/最小/最大
      min-idle: 10       #最小連接池數量
      max-active: 500   #連接池的最大數據庫連接數。設爲0表示無限制,一般把maxActive設置成可能的併發量就行了
      max-wait: 20000   #如果超過此時間將接到異常。設爲-1表示無限制,單位:ms
      time-between-eviction-runs-millis: 60000      #間隔多久才進行一次檢測,檢測需要關閉的空閒連接,單位是毫秒
      min-evictable-idle-time-millis: 300000        #一個連接在池中最小生存的時間
      validation-query: SELECT 'x'
      test-while-idle: true
      test-on-borrow: false     #申請連接時執行validationQuery檢測連接是否有效,做了這個配置會降低性能。
      test-on-return: false     #歸還連接時執行validationQuery檢測連接是否有效,做了這個配置會降低性能
      #打開PSCache,並指定每個連接上PSCache的大小。oracle設爲true,mysql設爲false。分庫分表較多推薦設置爲false
      pool-prepared-statements: false    #是否緩存preparedStatement,也就是PSCache。PSCache對支持遊標的數據庫性能提升巨大,比如說oracle。在mysql下建議關閉。
      max-pool-prepared-statement-per-connection-size: 20

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章