为了在spring引导项目中运行我的测试用例,我需要设置一个嵌入式数据库。
我将SQL脚本分隔成两个文件,以便为它们设置不同的分隔符:
一个包含基本的create脚本(NAME =CREATETABLE.sql,分离器= ;),另一个包含存储过程(NAME =RESTRET-ASURDRE.sql,= /;)。
根据this post上的注释,通过在applicationContext.xml中这样做,我可以为这两个sql文件配置不同的分隔符:
<jdbc:initialize-database data-source="mctDBDataSource" ignore-failures="DROPS" >
<jdbc:script location="classpath:databaseTesting/inMemory/createInMemoryDatabase.sql" separator=";"/>
<jdbc:script location="classpath:databaseTesting/inMemory/createInMemoryDatabaseProcedures.sql" separator="/;"/>
</jdbc:initialize-database>但在我的例子中,我试图使用以下非XML方法。
public DataSource myDataSource(){
return new EmbeddedDatabaseBuilder().generateUniqueName(true)
.setType(EmbeddedDatabaseType.HSQL).addScript("create-table").setSeparator(";").setEncryptEncoding("UTF-8")
.ignoreFiledDrops(true).build();
}如果我只使用一个SQL文件,上述代码可以正常工作。
如何将两个SQL文件与不同的分隔符组合起来,从而创建一个DataSource。
这样做是行不通的:
public DataSource myDataSource(){
return new EmbeddedDatabaseBuilder().generateUniqueName(true)
.setType(EmbeddedDatabaseType.HSQL).addScript("create-table")
.setSeparator(";").addScript("stored-procedures").setSeparator("/;")setEncryptEncoding("UTF-8")
.ignoreFiledDrops(true).build();
}发布于 2017-07-06 05:41:21
您不能直接用EmbeddedDatabaseFactor来执行它,但是您可以在EmbeddedDatabaseFactor中使用一个脚本,然后使用一个新的ResourceDatabasePopulator在数据库上执行第二个脚本。
https://stackoverflow.com/questions/44932497
复制相似问题