Spring Boot 数据库初始化方式
这页的目的
这页专门说明当前 luckycolor-admin-springboot 的数据库初始化口径,避免继续按旧的自动迁移思路理解项目。
结论先说:
- 当前 Spring Boot 后端使用
MyBatis-Plus做持久层映射 - 当前仓库不再维护自动迁移框架,也不会在启动时自动建表
- 启动前必须先准备好数据库结构和基础数据
当前不是哪种模式
当前项目不是下面这种模式:
- 启动应用后自动执行迁移脚本
- 启动应用后自动创建全量业务表
- 启动应用后自动写入完整引导数据
如果数据库里缺表、缺字段或缺核心基础数据,Spring Boot 启动后只会在真实业务访问时暴露问题,而不会替你补完整库结构。
当前依赖什么
当前项目真正依赖的是三件事:
- 正确的数据源配置
- 已经准备好的数据库表结构
- 已经准备好的核心基础数据
其中:
- 数据源入口主要看
src/main/resources/application.yml - 本地联调默认还会叠加
src/main/resources/application-local.yml - 运行期 SQL 映射由 MyBatis-Plus 的 DO、Mapper、Service 负责
启动前至少要准备什么
最少要保证下面几类内容已经存在。
1. 基础业务表
至少要有这些主链路相关表:
- 租户与套餐相关表
- 用户、角色、菜单、部门相关表
- 字典、配置、公告、日志相关表
- 前端兼容接口依赖的扩展表
如果这些表结构和当前代码里的 DO / Mapper 不一致,常见现象会是:
- 启动后访问接口直接报 SQL 异常
- 某些管理页能打开,但列表或弹窗报错
- 登录成功后权限、菜单或资料快照异常
2. 核心基础数据
至少要准备这些基础数据:
- 默认租户与默认租户套餐
- 内置管理员账号
- 内置超级管理员角色
- 系统菜单树
- 角色权限码与用户权限码
- 字典、配置等公共基础数据
如果基础数据不完整,常见现象会是:
- 登录后菜单缺失
- 按钮显隐和后端权限校验不一致
- 页面列表为空,但不是前端渲染问题
当前代码里有哪些“运行期修补”
当前后端只保留非常小范围、幂等的运行期修补逻辑,不负责完整初始化数据库。
已知的一个例子是:
BuiltinPermissionRepairRunner
它的作用是:
- 在持久化模式下检查内置超级管理员角色和账号
- 如果缺少
tenant:delete、tenant:package:delete这类权限,就幂等补齐
它不负责:
- 创建业务表
- 初始化完整菜单树
- 初始化完整角色和字典数据
- 替代数据库建库建表流程
所以不要把这类修补器理解成“数据库初始化方案”。
推荐的准备顺序
如果你要在新环境拉起 Spring Boot,建议按这个顺序做:
- 创建目标数据库
- 导入当前版本对应的表结构
- 导入默认租户、管理员、角色、菜单、字典等基础数据
- 核对
application.yml或环境变量里的数据源配置 - 启动 Spring Boot
- 访问健康检查、登录接口和权限快照接口做最小验证
最小验证清单
建议至少验证下面几项:
GET /api/health能正常返回POST /api/auth/login能用默认管理员成功登录GET /api/auth/profile能拿到当前用户信息GET /api/auth/access能返回菜单和按钮权限快照- 前端登录后,用户管理、角色管理、租户管理、租户套餐页面能正常打开
如果你要进一步确认权限链路,建议再执行:
- 前端 A7 定向回归用例
sh mvnw test