Skip to content

Spring Boot 数据库初始化方式

这页的目的

这页专门说明当前 luckycolor-admin-springboot 的数据库初始化口径,避免继续按旧的自动迁移思路理解项目。

结论先说:

  • 当前 Spring Boot 后端使用 MyBatis-Plus 做持久层映射
  • 当前仓库不再维护自动迁移框架,也不会在启动时自动建表
  • 启动前必须先准备好数据库结构和基础数据

当前不是哪种模式

当前项目不是下面这种模式:

  • 启动应用后自动执行迁移脚本
  • 启动应用后自动创建全量业务表
  • 启动应用后自动写入完整引导数据

如果数据库里缺表、缺字段或缺核心基础数据,Spring Boot 启动后只会在真实业务访问时暴露问题,而不会替你补完整库结构。

当前依赖什么

当前项目真正依赖的是三件事:

  1. 正确的数据源配置
  2. 已经准备好的数据库表结构
  3. 已经准备好的核心基础数据

其中:

  • 数据源入口主要看 src/main/resources/application.yml
  • 本地联调默认还会叠加 src/main/resources/application-local.yml
  • 运行期 SQL 映射由 MyBatis-Plus 的 DO、Mapper、Service 负责

启动前至少要准备什么

最少要保证下面几类内容已经存在。

1. 基础业务表

至少要有这些主链路相关表:

  • 租户与套餐相关表
  • 用户、角色、菜单、部门相关表
  • 字典、配置、公告、日志相关表
  • 前端兼容接口依赖的扩展表

如果这些表结构和当前代码里的 DO / Mapper 不一致,常见现象会是:

  • 启动后访问接口直接报 SQL 异常
  • 某些管理页能打开,但列表或弹窗报错
  • 登录成功后权限、菜单或资料快照异常

2. 核心基础数据

至少要准备这些基础数据:

  • 默认租户与默认租户套餐
  • 内置管理员账号
  • 内置超级管理员角色
  • 系统菜单树
  • 角色权限码与用户权限码
  • 字典、配置等公共基础数据

如果基础数据不完整,常见现象会是:

  • 登录后菜单缺失
  • 按钮显隐和后端权限校验不一致
  • 页面列表为空,但不是前端渲染问题

当前代码里有哪些“运行期修补”

当前后端只保留非常小范围、幂等的运行期修补逻辑,不负责完整初始化数据库。

已知的一个例子是:

  • BuiltinPermissionRepairRunner

它的作用是:

  • 在持久化模式下检查内置超级管理员角色和账号
  • 如果缺少 tenant:deletetenant:package:delete 这类权限,就幂等补齐

它不负责:

  • 创建业务表
  • 初始化完整菜单树
  • 初始化完整角色和字典数据
  • 替代数据库建库建表流程

所以不要把这类修补器理解成“数据库初始化方案”。

推荐的准备顺序

如果你要在新环境拉起 Spring Boot,建议按这个顺序做:

  1. 创建目标数据库
  2. 导入当前版本对应的表结构
  3. 导入默认租户、管理员、角色、菜单、字典等基础数据
  4. 核对 application.yml 或环境变量里的数据源配置
  5. 启动 Spring Boot
  6. 访问健康检查、登录接口和权限快照接口做最小验证

最小验证清单

建议至少验证下面几项:

  • GET /api/health 能正常返回
  • POST /api/auth/login 能用默认管理员成功登录
  • GET /api/auth/profile 能拿到当前用户信息
  • GET /api/auth/access 能返回菜单和按钮权限快照
  • 前端登录后,用户管理、角色管理、租户管理、租户套餐页面能正常打开

如果你要进一步确认权限链路,建议再执行:

  • 前端 A7 定向回归用例
  • sh mvnw test

相关文档

Built with VitePress for LuckyColor SaaS.