【问题标题】:How to insert data to table on spring boot application start?如何在 Spring Boot 应用程序启动时向表中插入数据?
【发布时间】:2016-05-16 12:03:28
【问题描述】:

如何在Spring Boot 应用程序启动时向表中插入数据?我的应用程序是由JHipster 生成的。我需要检查的是该表中是否已经存在该特定数据。如果没有,我应该添加它。

【问题讨论】:

  • 你能告诉我们你已经尝试过什么吗?关于你读过的主题的任何文章?您是否遇到了特定错误?
  • 你试过this吗?

标签: spring spring-boot spring-data spring-data-jpa jhipster


【解决方案1】:

如果您的应用程序是由 JHipster 生成的,那么它应该已经包含并为 Liquibase 正确配置。

你有几个选择:

  • 您可以使用 Liquibase 的 insert 更改来插入数据。
  • 您可以将数据放在 CSV 文件中,然后使用 loadData 更改来加载它。在00000000000000_initial_schema.xml 中查找loadData 标记以获取示例。
  • 您可以使用sql 更改直接运行本机SQL。

所有三个选项都可以与preconditions 结合使用,以确保在尝试插入数据之前数据不存在。如果您需要在每次启动应用程序时运行变更集,您可以使用 runAlways="true" 属性(相关文档在 this 页面上)。

【讨论】:

    【解决方案2】:

    您可以在您的服务类中创建一个函数来检查数据是否已经存在,如果不存在则保存该数据。

    【讨论】:

      【解决方案3】:

      您可以实现ApplicationRunner 并使用存储库来执行您需要执行的任何操作。

      如果ApplicationRunner 是一个spring bean,它会在应用程序启动时运行。

      对于更复杂的要求,我会尝试使用像 flyway that has good integration with spring boot 这样的工具

      【讨论】:

      • 谢谢。我创建了一个 bean。保留一个带有@PostConstruct 注释的方法。从方法调用服务。工作正常。
      猜你喜欢
      • 1970-01-01
      • 2020-05-16
      • 1970-01-01
      • 1970-01-01
      • 2016-11-30
      • 1970-01-01
      • 2017-11-28
      • 2017-03-05
      相关资源
      最近更新 更多