加载sql表进sql数据库(有就不加,没有才加,flyway)与初始化mongo(mongock)

本文介绍了如何使用Gradle和Flyway进行MySQL数据库的初始化,包括在资源目录下创建迁移文件夹并放置SQL脚本,启动项目以执行迁移。同时,文章详细展示了MongoDB的数据插入,通过Mongock进行数据变更日志管理和数据种子填充,并在YML配置文件中指定数据类所在的包。最后,提供了MongoDB数据注入的Java代码示例以及启用Mongock的主启动类注解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

mysql

  1. 导入gradle包 除sql驱动之外还需 implementation ‘org.flywaydb:flyway-core:5.2.4’
  2. 在resources包下,创建db目录并在db下创建migration目录
  3. 将sql表按命名规范放入2中的migration目录下
  4. 启动项目即可成功。在这里插入图片描述

mongo

  1. 除mongo所需的jar包外,还需
    implementation ‘com.github.cloudyrock.mongock:mongock-spring-v5:4.3.8’
    implementation ‘com.github.cloudyrock.mongock:mongodb-springdata-v3-driver:4.3.8’
  2. yml文件中添加待加入数据类所在包的全类名以.的形式间隔
mongock:
  change-logs-scan-package: com.config.mongock
  enabled: true
  1. 写代码注入
@ChangeLog
public class DeviceChangeLog {
	//order代表优先级,id就是一个名字,
    @ChangeSet(order = "001", id = "seed-device-document", author = "SYF")
    public void seedDeviceDocument(final DeviceRepository deviceRepository) {
        List<DeviceDoc> deviceDocs = new ArrayList<>();
        deviceDocs.add(
                DeviceDoc.builder().
                        deviceType("01").
                        deviceData(DeviceDoc.DeviceData.builder().build()).
                        deviceId("1").
                        location(
                                DeviceDoc.Location.builder().latitude("202.122").longitude("206.321").build()
                        ).build()
        );
        deviceDocs.add(
                DeviceDoc.builder().
                        deviceType("02").
                        deviceData(DeviceDoc.DeviceData.builder().build()).
                        deviceId("2").
                        location(
                                DeviceDoc.Location.builder().latitude("202.122").longitude("206.321").build()
                        ).build()
        );
        deviceDocs.add(
                DeviceDoc.builder().
                        deviceType("03").
                        deviceData(DeviceDoc.DeviceData.builder().build()).
                        deviceId("3").
                        location(DeviceDoc.Location.builder().
                                latitude("202.122").longitude("206.321").build()).build()
        );
        deviceRepository.insert(deviceDocs);
    }
}
  1. 主启动类注解@EnableMongock
### 使用 Flyway 数据库初始化 为了通过 Spring Boot 启动时执行 Flyway 数据库迁移,配置应用程序属性文件 `application.properties` 或者 `application.yml` 是必要的。对于基于 Maven 的项目,在默认情况下,Spring Boot 自动配置会查找类路径下的依赖并自动应用 Flyway 配置来启动迁移过程[^1]。 当遇到非空模式而没有元数据的情况时,将会抛出异常提示使用 `baseline()` 方法或设置参数 `spring.flyway.baseline-on-migrate=true` 来创建该格[^2]。这意味着如果数据库已经存在一些结构化数据,则需要先建立基线版本以便后续可以安全地应用新的变更脚本而不破坏现有架构。 下面是一个简单的例子展示如何在 Java 中手动调用 Flyway API 初始化数据库: ```java import org.flywaydb.core.Flyway; public class DatabaseInitializer { public static void main(String[] args) { Flyway flyway = Flyway.configure() .dataSource("jdbc:mysql://localhost:3306/mydatabase", "user", "password") .load(); // 如果数据库不是全新的, 则应首先设定基线版本. flyway.baseline(); // 执行所有待处理的迁移操作 flyway.migrate(); } } ``` 此代码片段展示了如何连接到 MySQL 数据库并通过 Flyway 库来初始化工作。注意这里调用了 `.baseline();` 方法用于处理已有数据的情形;而在实际开发环境中通常只需要确保 `spring.flyway.baseline-on-migrate=true` 已经被正确加入到了项目的配置文件当中即可让 Spring Boot 处理好一切。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

syf_wfl

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值