Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java SpringH2嵌入式数据库_Java_Spring_Spring Boot_H2_Embedded Database - Fatal编程技术网

Java SpringH2嵌入式数据库

Java SpringH2嵌入式数据库,java,spring,spring-boot,h2,embedded-database,Java,Spring,Spring Boot,H2,Embedded Database,我想创建一个内存中的数据库,其中填充了用于快速测试的测试数据,因此我在配置文件中声明了这个bean,但我还想设置以下属性: MODE=MySQL DB_CLOSE_ON_EXIT=FALSE 但我不知道在哪里做 @Bean public DataSource dataSource(){ return (new EmbeddedDatabaseBuilder()) .setType(EmbeddedDatabaseType.H2) //.H2

我想创建一个内存中的数据库,其中填充了用于快速测试的测试数据,因此我在配置文件中声明了这个bean,但我还想设置以下属性:

MODE=MySQL
DB_CLOSE_ON_EXIT=FALSE
但我不知道在哪里做

@Bean
public DataSource dataSource(){
    return
        (new EmbeddedDatabaseBuilder())
        .setType(EmbeddedDatabaseType.H2) //.H2 
        .addScript("classpath:db/H2.schema.sql")
        .addScript("classpath:db/H2.data.sql")
        .build();
}

另一种方法是使用属性连接数据源。通过这种方式,您可以设置JDBC URL,该URL可以包含其他属性。

该模式可以通过H2上的SQL语句来完成,但我非常确定,
DB\u CLOSE\u DELAY
必须设置为URL的一部分,该URL不容易挂钩。您最好在application.properties/yml中设置它,并让spring自动配置它

jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1;MODE=MySQL将是
spring.datasource.url
附加属性可用于
模式和
数据

@Bean
public DataSource dataSource(){
    return
        new EmbeddedDatabaseBuilder()
        .setType(EmbeddedDatabaseType.H2)
        .setName("testDB;DB_CLOSE_ON_EXIT=FALSE;MODE=MySQL") 
        .addScript("classpath:db/H2.schema.sql")
        .addScript("classpath:db/H2.data.sql")
        .build();
}

您可以尝试使用
EmbeddedDatabaseBuilder.setName()


注意:我自己并没有尝试过这个,但在答案上找到了一条线索

立刻击败我:p解决了我的问题。谢谢:)
@Bean
public DataSource dataSource() {
return
    new EmbeddedDatabaseBuilder()
    .setName("testdb;MODE=MySQL;DB_CLOSE_ON_EXIT=false")
    .setType(EmbeddedDatabaseType.H2) //.H2 
    .addScript("classpath:db/H2.schema.sql")
    .addScript("classpath:db/H2.data.sql")
    .build();
}