Springboot启动时数据库初始化

使用springboot jdbc初始化数据库

spring.datasource下有两个属性schme、data,其中schema为表初始化语句,data为数据初始化,默认加载schema.sql与data.sql。

脚本位置可以通过spring.datasource.schema  与spring.datasource.data 来改变。

spring:
  datasource:
    username: xxx
    password: xxx
    url: jdbc:mysql://xxx.xxx.xxx.xxx:3306/test?useUnicode=true&characterEncoding=utf8&characterSetResults=utf8
    driver-class-name: com.mysql.jdbc.Driver
    platform: mysql
    #initialization-mode初始化模式(springboot2.0),其中有三个值,always为始终执行初始化,embedded只初始化内存数据库(默认值),如h2等,never为不执行初始化
    initialization-mode: always
    continue-on-error: true
    #启动时需要初始化的建表语句
    schema: classpath*:db/schema.sql
    #动时需要初始化的数据
    data: classpath*:db/data.sql

在resources目录下创建db文件夹,添加schema.sql和data.sql,classpath*  扫描所有模块的resources下db/schema.sql和db/data.sql

schema.sql

DROP TABLE IF EXISTS `tb_test`;
CREATE TABLE `tb_test` (
  `ID` varchar(32) NOT NULL COMMENT '唯一标识',
  `NAME` varchar(255) DEFAULT NULL COMMENT '名称',
  `CODE` varchar(255) DEFAULT NULL COMMENT '编码',
  `CREATE_TIME` datetime DEFAULT NULL,
  `UPDATE_TIME` datetime DEFAULT NULL,
  PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

#或 判断表存不存在,不存在创建表
CREATE TABLE IF NOT EXISTS `tb_test` (
  `ID` varchar(32) NOT NULL COMMENT '唯一标识',
  `NAME` varchar(255) DEFAULT NULL COMMENT '名称',
  `CODE` varchar(255) DEFAULT NULL COMMENT '编码',
  `CREATE_TIME` datetime DEFAULT NULL,
  `UPDATE_TIME` datetime DEFAULT NULL,
  PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

data.sql

INSERT INTO `tb_test` VALUES ('001', '测试1', 'test1', null, null);
INSERT INTO `tb_test` VALUES ('002', '测试2', 'test2', null, null);
#或 判断数据存不存在,不存在插入数据
INSERT INTO `tb_test` SELECT '001', '测试1', 'test1', null, null FROM DUAL WHERE NOT EXISTS (SELECT ID FROM `tb_test` WHERE ID = "001");
INSERT INTO `tb_test` SELECT '002', '测试2', 'test2', null, null FROM DUAL WHERE NOT EXISTS (SELECT ID FROM `tb_test` WHERE ID = "002");

你可能感兴趣的:(springboot,resource,web,mysql,java,spring)