使用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");