# flyway **Repository Path**: huijz_admin/flyway ## Basic Information - **Project Name**: flyway - **Description**: springboot3 集成flyway - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-09-02 - **Last Updated**: 2025-09-02 ## Categories & Tags **Categories**: Uncategorized **Tags**: 学习笔记 ## README # Flyway 与 MyBatis-Plus 集成演示项目 这是一个基于Spring Boot 3和Java 21的项目,演示了Flyway数据库迁移工具与MyBatis-Plus的集成使用。 ## 项目特点 - Spring Boot 3.2.0 - Java 21 - Flyway 数据库迁移 - MyBatis-Plus 3.5.13 - MySQL/H2 数据库支持 ## Flyway 演示场景 本项目包含以下Flyway使用场景的演示: 1. **基本SQL迁移**:V1、V2等版本化迁移脚本 2. **版本化迁移**:使用V前缀的有序迁移 3. **可重复迁移**:使用R前缀的可重复执行迁移 4. **Java迁移**:基于Java代码的迁移实现 5. **多位置迁移**:从不同位置加载迁移脚本 6. **迁移回调**:在迁移过程中的各个阶段执行自定义逻辑 7. **迁移策略**:自定义迁移策略,如清理后迁移 8. **手动控制**:通过API手动控制迁移过程 9. **修复和验证**:修复失败的迁移和验证迁移状态 ## 项目结构 ``` src/main/ ├── java/com/example/flywaydemo/ │ ├── FlywayDemoApplication.java # 应用入口 │ ├── callback/ # Flyway回调演示 │ ├── config/ # 配置类 │ ├── controller/ # REST控制器 │ ├── entity/ # 实体类 │ ├── mapper/ # MyBatis-Plus映射器 │ ├── migration/ # Java迁移类 │ └── service/ # 服务层 └── resources/ ├── application.yml # 应用配置 └── db/ ├── migration/ # 主迁移脚本目录 │ ├── V1__Create_initial_tables.sql │ ├── V2__Add_sample_data.sql │ ├── V3__Add_user_role_column.sql │ ├── V4__Create_orders_table.sql │ ├── V5__Add_product_category.sql │ ├── V6.1__Add_user_address.sql │ ├── V6.2__Add_product_rating.sql │ └── R__Create_views.sql └── custom/ # 自定义位置迁移脚本 └── V8__Add_product_tags.sql ``` ## 运行项目 ### 前提条件 - JDK 21 - Maven 3.6+ - MySQL (可选,也可使用H2内存数据库) ### 步骤 1. 克隆项目 2. 配置数据库连接(application.yml) 3. 运行应用: ``` mvn spring-boot:run ``` 或使用开发环境配置: ``` mvn spring-boot:run -Dspring-boot.run.profiles=dev ``` ## API端点 - `/api/users` - 用户CRUD操作 - `/api/products` - 产品CRUD操作 - `/api/flyway/info` - 查看Flyway迁移信息 - `/api/flyway/migrate` - 手动触发迁移 - `/api/flyway/schema` - 查看数据库表结构 - `/api/flyway/repair` - 修复失败的迁移 - `/api/flyway/validate` - 验证迁移 ## Flyway配置说明 项目中的Flyway配置位于`application.yml`文件中: ```yaml spring: flyway: enabled: true # 启用Flyway locations: classpath:db/migration # 迁移脚本位置 baseline-on-migrate: true # 在非空数据库上执行基准迁移 baseline-version: 0 # 基准版本号 validate-on-migrate: true # 迁移前验证 out-of-order: false # 是否允许乱序执行 clean-disabled: false # 是否禁用clean命令(演示用) ``` ## 自定义Flyway配置 项目中还演示了如何通过Java代码自定义Flyway配置: - `FlywayConfig.java` - 包含自定义迁移策略和配置 - `FlywayCallbackDemo.java` - 演示Flyway回调机制 - `JavaBasedMigration.java` - 演示基于Java的迁移实现 ## 许可证 MIT