【问题标题】:Spring boot SQL script manually手动 Spring 启动 SQL 脚本
【发布时间】:2021-10-20 13:09:32
【问题描述】:

我有一个任务,要创建一个包含一些数据库处理的基本应用程序。 我真的很陌生,整个弹簧靴之类的。 我没有编写任何 SQL 行就完成了所有 GET、PUT、POST、DELETE 操作,从创建表开始。 但他们要求我提供 SQL 脚本,以及我是如何设法创建数据库结构、连接和其他东西的。 我该如何解决这个问题?

【问题讨论】:

  • 听起来你已经让数据库工作了......没有SQL。但是现在您被要求生成 SQL(对于已经工作的)。正确的?解决方案:只需配置 Spring/JPA 以转储 SQL 命令(例如在临时数据库上),然后将 Spring 引导日志的输出复制/粘贴到 SQL 脚本中:baeldung.com/sql-logging-spring-boot

标签: java sql spring database spring-boot


【解决方案1】:

您可以使用 Jpa Like JpaRepository 接口。您不需要编写任何 SQL 查询,我们使用它只需将您的数据库配置为 Application.Property 类似数据库类型

您的用户名和密码

public interface UserRepository extends CrudRepository<User, Integer> {}

执行此代码时,您可以使用创建用户、查找所有用户、按 id 查找用户、删除用户和更新用户

并在Entity类中使用@Entity注解 将实体类表示表放入您的数据库中

@Entity
@Table(name="user")
public class User{
@Colume(name="id")
private Long id;
@Colume(name="name")
private String name;

//getter and setter here
}

当运行此类时,您的数据库合同用户表具有 id 和 名字

此链接使用数据库创建 Spring Boot 应用程序 https://spring.io/guides/gs/accessing-data-mysql/

【讨论】:

  • 我就是这样做的。但他们要求我在单独的 .sql 文件中提供 SQL 脚本
  • 您系统中的休眠记录了数据库和您的应用程序之间的任何操作,但我不知道您在哪里可以找到此记录,或者您是否可以将此记录器写入文本文件,但您可以搜索它@Artisz
【解决方案2】:

执行此操作的最简单方法是在 resources 文件夹中创建一个名为 schema.sql 的文件,其中包含有关 DDL(表创建...)的所有查询,如果需要,还可以在其中添加 data.sql INSERT 查询以填充您的数据库。

然后你必须在 application.properties 中添加 spring.jpa.hibernate.ddl-auto=none 来禁用 JPA 的模式创建,并让 Spring Boot 在启动时自动执行这些脚本。

如果你想要更强大的东西,你应该试试LiquibaseFlyway

【讨论】:

    【解决方案3】:

    在 spring.jpa.properties 中添加以下内容

    spring.jpa.properties.javax.persistence.schema-generation.scripts.action=create
    spring.jpa.properties.javax.persistence.schema-generation.scripts.create-target=create.sql
    spring.jpa.properties.javax.persistence.schema-generation.scripts.create-source=metadata
    

    请参阅@baeldung 的这篇文章https://www.baeldung.com/spring-data-jpa-generate-db-schema 了解更多详情。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-06
      • 2022-01-24
      • 2020-03-01
      • 2021-10-30
      • 1970-01-01
      • 2017-06-12
      • 2013-05-07
      • 2016-02-01
      相关资源
      最近更新 更多