Spring H2嵌入式数据库

4

我希望创建一个内存数据库,用于快速测试。因此,在我的配置文件中声明了这个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();
}
4个回答

14

试一试

@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();
}

1
每分钟打我一次 :P - qtips
解决了我的问题。谢谢 :) - AnonymousAngelo

3
你可以尝试使用EmbeddedDatabaseBuilder.setName()
@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();
}

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

2

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


2

可以通过 H2 上的 SQL 语句来完成这个模式,但我很确定必须将 DB_CLOSE_DELAY 设置为 URL 的一部分,而这没有易于钩入的方式。最好在 application.properties/yml 中设置它,让 spring 自动配置。

jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1;MODE=MySQL 将是 spring.datasource.url,可以为 schemadata 提供附加属性。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接