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

 

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