【问题标题】:Read database object with spring boot and h2使用 spring boot 和 h2 读取数据库对象
【发布时间】:2020-03-26 12:27:08
【问题描述】:

我想知道如何使用 hibernate 将 h2 数据库中的数据库对象读取到我的 spring 控制器中(或者其他任何东西,我并没有与 hibernate 结婚)。

我有一个使用 gradle 的简单项目设置。

我的application.properties

spring.thymeleaf.cache=false
# Datasource
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.platform=h2
spring.datasource.url=jdbc:h2:mem:database
spring.datasource.username=something
spring.datasource.password=password
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
spring.jpa.show-sql=true
# H2
spring.h2.console.enabled=true
spring.h2.console.path=/h2
spring.h2.console.settings.trace=false
spring.h2.console.settings.web-allow-others=false
# Hibernate
spring.jpa.hibernate.ddl-auto=none
spring.jpa.properties.hibernate.show_sql=false
spring.jpa.properties.hibernate.use_sql_comments=false
spring.jpa.properties.hibernate.format_sql=false
spring.jpa.properties.hibernate.current_session_context_class=org.springframework.orm.hibernate4.SpringSessionContext

我可以看到 schema.sql 和 data.sql 正在执行。我使用 h2 控制台看到我的表存在其中的数据。我也做了一个实体对象。

但是我不知道如何将我的实体对象从 h2 读取到我的控制器中。有人可以指出正确的资源或解释如何去做吗?

【问题讨论】:

  • 您可以使用来自 spring-boot-starter-data-jpa 的 CrudRepository 读取实体对象。见这里spring.io/guides/gs/accessing-data-jpa
  • @Devilluminati 它并没有完全解释我将如何在控制器中使用它。我最大的问题是能够在控制器中获取对象,以便将其传递给生成的网页。
  • 这样操作dzone.com/articles/spring-boot-with-spring-data-jpa。使用实体对象作为第一个通用类型创建存储库。二是ID长。将此存储库注入您的控制器并执行您想做的任何事情。在 MVC 中,您可以将数据放在地图中以在模板中读取它,例如百里香叶。如果这不能回答问题,我不明白你到底在寻找什么。

标签: spring hibernate spring-boot spring-data-jpa h2


【解决方案1】:

到目前为止,最简单的方法是使用spring-data-jpa。为此,您需要一个实体(即带有 @javax.persistence.Entity 注释的类)来表示表中的一行。

@Entity
public class Thing {
    @Id
    private String id;
    private String name;
}

然后您需要一个可以从数据库读取和写入的存储库。这是一个扩展 spring 存储库类之一的接口,通常是 CrudRepository,如下所示:

public interface CustomerRepository extends CrudRepository<Thing, String> {
  Thing findById(long id);
}

然后,将 repo 自动装配到控制器的构造函数中,您就快完成了。最后一部分是调用 repo 中的一种方法。您不必实际实施 repo,spring 会为您执行此操作。基本 repo 有很多有用的默认方法,您甚至不必在代码中列出。在 spring 的网站上有很多关于这一切的参考资料,我已经将你链接到一个很好的教程(它有 gradle 示例,但你真的应该使用 maven,因为它在各个方面都好得多)。

【讨论】:

  • 必须补充一点,配置类还需要添加@EnableJpaRepositories(basePackages = {"package.name"})@EntityScan(basePackages = "package.name")注解,然后一切正常。
猜你喜欢
  • 2019-09-06
  • 2019-01-26
  • 1970-01-01
  • 2016-05-15
  • 2016-10-13
  • 2018-11-29
  • 2019-02-02
  • 2022-07-09
  • 2023-02-08
相关资源
最近更新 更多