如何在一个 EmbeddedDatabaseBuilder 中组合多个具有不同分隔符的 SQL 文件?
Posted
技术标签:
【中文标题】如何在一个 EmbeddedDatabaseBuilder 中组合多个具有不同分隔符的 SQL 文件?【英文标题】:How to combine multiple SQL files with different separators in one EmbeddedDatabaseBuilder? 【发布时间】:2017-07-05 17:24:46 【问题描述】:我需要设置一个嵌入式数据库才能在 Spring Boot 项目中运行我的测试用例。
我已将我的 SQL 脚本分成两个文件,以便为它们设置不同的分隔符:
一个包含我的基本创建表脚本 (NAME = create-table.sql, SEPARATOR = ;),另一个包含存储过程 (NAME = stored-procedures.sql, ,分隔符 = /;)。
根据this post 上的 cmets,我可以通过在 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();
【问题讨论】:
【参考方案1】:您不能直接使用EmbeddedDatabaseFactor
执行此操作,但您可以使用EmbeddedDatabaseFactor
中的一个脚本,然后使用新的ResourceDatabasePopulator
在数据库上执行第二个脚本。
【讨论】:
以上是关于如何在一个 EmbeddedDatabaseBuilder 中组合多个具有不同分隔符的 SQL 文件?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 PickerView 顶部添加一个按钮以及如何在单击该按钮时关闭 PickerView?
iOS:如何在另一个表格视图中显示搜索结果?以及如何在搜索时显示建议?