使用初始化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 与脚本。
