使用初始化SQL脚本

郭胜凯2026/08/17

说明

在某些情况下, 我们可能需要在应用程序启动时执行一些初始化的SQL脚本, 例如插入初始用户和角色等。Smart Mybatis 提供了方便的方式来实现这一需求。

配置初始化SQL脚本

要在应用启动时执行初始化SQL脚本, 我们可以在项目的资源目录下创建SQL脚本文件比如 init.sql 的文件。然后在实体类中使用@TableName注解的init参数来实现指定表的初始化脚本。

@TableName(value = "example_table", init = "init.sql")
public class Example extends PO {
    @ID
    private Integer id;
}

注意

  • 初始化SQL脚本的路径是类资源路径下的文件(classpath:)
  • 只有在实体类对应的表不存在或无数据时才会执行该脚本。一旦表中存在任意数据, 初始化脚本将不会被执行。

时机

当同时开启自动同步数据库结构(spring.mybatis.smart.auto-sync-db=true)时,初始化脚本会在表结构同步之后执行。

初始化器会先检查资源是否存在、脚本是否为空,再调用 count();只有表内记录数为 0 时才执行。脚本适合初始化可信的预置数据,不应用来覆写自动同步生成的表结构。

脚本由 executeSqlScript 拆分并逐条执行。需要原子性时,请在调用链上显式配置 Spring 事务;DDL 的事务语义取决于数据库。详情见原始 SQL 与脚本

Last Updated 1/13/2026, 4:41:18 PM