Springboot启动时数据库初始化

本文介绍如何使用SpringBoot结合JDBC进行数据库初始化的过程。通过配置文件指定初始化模式、SQL脚本路径等,确保应用程序启动时能正确创建表结构及填充初始数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值