我有一个简单的问题,是否可以为MySQL或其他数据库使用spring-boot数据r2dbc自动生成表?在JPA中,我添加了spring.JPA.hhibernate。ddl-auto=更新并创建表
这是我的pom:
<dependencies>
<dependency>
<groupId>org.springframework.boot.experimental</groupId>
<artifactId>spring-boot-starter-data-r2dbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-webflux</artifactId>
</dependency>
<dependency>
<groupId>dev.miku</groupId>
<artifactId>r2dbc-mysql</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot.experimental</groupId>
<artifactId>spring-boot-test-autoconfigure-r2dbc</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.projectreactor</groupId>
<artifactId>reactor-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-all</artifactId>
<version>4.1.43.Final</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
</dependencies>
为了让r2dbc在应用程序启动时自动创建表,您只需要一个带有@Configuration注释的config java类,例如:
import io.r2dbc.spi.ConnectionFactory;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.ClassPathResource;
import org.springframework.r2dbc.connection.init.ConnectionFactoryInitializer;
import org.springframework.r2dbc.connection.init.ResourceDatabasePopulator;
@Configuration
public class DbSchemaInitOnStartup {
@Bean
ConnectionFactoryInitializer initializer(@Qualifier("connectionFactory") ConnectionFactory connectionFactory) {
ConnectionFactoryInitializer initializer = new ConnectionFactoryInitializer();
initializer.setConnectionFactory(connectionFactory);
ResourceDatabasePopulator resource = new ResourceDatabasePopulator(new ClassPathResource("schema.sql"));
initializer.setDatabasePopulator(resource);
return initializer;
}
}
架构.sql
文件必须放在 /resources
文件夹中,上述文件才能正常工作。
我知道这不是确切的答案,但在R2DBC中创建表的唯一方法是使用databasePopulator
:
@Bean
fun initializer(connectionFactory: ConnectionFactory) =
ConnectionFactoryInitializer().apply {
setConnectionFactory(connectionFactory)
setDatabasePopulator(CompositeDatabasePopulator()
.apply {
addPopulators(ResourceDatabasePopulator(FileSystemResource("src/test/resources/sql/init.sql")))
})
}
它在考试时会派上用场。
当应用程序启动时,我正在尝试创建mysql数据库。我尝试了波纹管配置,但无法实现,如果有人对此有想法,请告诉我,
问题内容: 我正在使用PostgreSQL和Spring 4,希望我的应用在运行时自动创建数据库。 我的实体类是: HibernateConfig.java application.properties 但是,当我运行SQL访问表User时,将出现错误:表’User’不存在。 如何使Hibernate自动创建数据库? 问题答案: 该物业将为您解决问题。创建SessionFactory时,它将自动验
我正在使用PostgreSQL和Spring 4,并希望我的应用程序在运行时自动创建数据库。 我的实体类是: HibernateConfig。Java语言 application.properties 但当我运行SQL访问表User时,会出现错误:表“User”不存在。 如何使Hibernate自动创建数据库?
我有一个 postgresql 数据库的 spring r2dbc 连接,并想创建一个表, 实际上等同于 SQL 由于DatabaseClient似乎只支持select/insert,我如何做到这一点?
问题内容: http://www.vaannila.com/spring/spring-hibernate- integration-1.html 在阅读本教程时,他们没有提到在数据库中创建表的任何内容。一旦我指定了表和字段,Hibernate会自动处理它吗? 这是我的bean配置。 问题答案: 您的hibernate.hbm2ddl.auto设置应该确定所创建的数据库(选项为,,或者)
我有一个 Spring 引导 API,它使用 jpa 和 postgresql,并在我运行应用程序时自动创建表。 但出现以下错误消息: 这是我的应用程序。属性