Spring Boot,在应用程序启动后执行某些 SQL 语句

在 Spring Boot 中,如果你想在应用程序启动后执行某些 SQL 语句,可以利用 spring.sql.init 属性来配置初始化脚本。这通常用于在应用启动时创建数据库表、索引、视图等,或者填充默认数据。

data-locations 和 schema-locations 指定了 SQL 脚本的位置。这些脚本应该位于类路径中指定的目录下。例如:

  • src/main/resources/db/schema.sql 用于创建数据库结构。
  • src/main/resources/db/data.sql 用于插入初始数据。

在 schema.sql 中,你可以编写用于创建表的 SQL 语句:

复制代码
-- schema.sql 文件内容
CREATE TABLE IF NOT EXISTS users (
    id INT AUTO_INCREMENT,
    name VARCHAR(100),
    email VARCHAR(150),
    PRIMARY KEY (id)
);

在 data.sql 中,你可以插入一些初始数据:

复制代码
-- data.sql 文件内容
INSERT INTO users (name, email) VALUES ('Alice', 'alice@example.com');
INSERT INTO users (name, email) VALUES ('Bob', 'bob@example.com');

核心文件yml文件修改

复制代码
spring:
    application:
        name: demo_1

    datasource:
        url: jdbc:mysql://127.0.0.1:3306/shanshui?useUnicode=true&characterEncoding=utf-8&serverTimezone
        username: root
        password: 123456
        driver-class-name: com.mysql.cj.jdbc.Driver

    sql:
        init:
            # 数据库 ddl 脚本位置
            schema-locations: classpath:db/schema.sql
            # 数据库 dml 脚本位置
            data-locations: classpath:db/data.sql
            # always:应用每次启动都执行,never:禁用
            mode: always
相关推荐
梦想恒远8 分钟前
Spring Boot + LangChain4j 统计 token 成本:ChatModelListener 实测与单价口径
spring boot·后端
SelectDB17 分钟前
SelectDB 是哪个公司的?是国产数据库吗?一篇讲清飞轮科技与 Apache Doris 的关系
数据库
这个DBA有点耶25 分钟前
库内计算推理:一条SQL背后的算子融合,和外挂方案差了几次网络往返
数据库·人工智能·sql
这个DBA有点耶2 小时前
函数索引的“完全一致”有多苛刻:写法、字符集、类型,差一处就失效
数据库·mysql·代码规范
星恒随风3 小时前
MySQL 从零入门(三):表的约束详解
linux·服务器·数据库·笔记·mysql
Alluxio3 小时前
Alluxio + OCI:为 AI 工作负载实现亚毫秒访问延迟与可扩展吞吐
运维·数据库·人工智能·分布式·缓存·ai·语言模型
数据库急诊室_阿哲7 小时前
一次加索引建议的复核记录:从报告到签字
数据库·ai数据库
howard20057 小时前
Spring Boot 版新生报到可视化系统
spring boot·新生报到可视化系统
青瓦梦滋8 小时前
Redis主从复制
服务器·数据库·redis·缓存·bootstrap
慧都小妮子8 小时前
Wyn商业智能国产数据库适配:数据接入、分析缓存与审计日志验证清单
数据库·数据分析·数据可视化·审计日志·商业智能