如何使用Spring-test-dbunit framework转义SQL Server关键字
在我的@DatabaseSetup("sampleData.xml")文件中,有一个名为File的表,它是SQL Server中的保留关键字。为了使查询在SQL Server上成功运行,需要用方括号([File])封装保留关键字。
在Expoting Dataset to a xml file giving error in DBunit中,我看到这可以通过设置模式转义配置在dbunit中完成。在使用Spring-test-dbunit时,我不知道将此配置放在何处或如何放置。
在哪里/如何告诉spring- test -dbunit框架在使用提供的xml提要将测试数据插入数据库时正确转义数据库关键字?
如果你想看代码,让我知道我应该发布什么摘录,我很乐意这样做。
发布于 2013-07-10 09:57:11
我想,这可能会对你有帮助
public class DatabaseExport
{
public static void main(String[] args) throws Exception
{
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
DriverManager.registerDriver(new com.microsoft.sqlserver.jdbc.SQLServerDriver());
Connection jdbcConn = DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DatabaseName=def_config","dbuser","dbpasswd");
IDatabaseConnection iconn = new DatabaseConnection( jdbcConn );
iconn.getConfig().setProperty(DatabaseConfig.PROPERTY_ESCAPE_PATTERN , "[?]");
IDataSet fullDataSet = iconn.createDataSet();
FlatXmlDataSet.write(fullDataSet, new FileOutputStream("X:/fullDataSet.xml"));
}
}发布于 2016-03-24 16:18:01
要使用spring-test-dbunit做到这一点,您需要遵循文档页面上的“定制IDatabaseConnections”部分:https://springtestdbunit.github.io/spring-test-dbunit/
对于Java Config变体(作为备份参考),请参阅这个StackOverflow问题的答案:Spring Test DBunit Warning
在您的示例中,使用dbUnitDatabaseConfig bean将escapePattern属性设置为"[?]"。如下所示:
<bean id="dbUnitDatabaseConfig" class="com.github.springtestdbunit.bean.DatabaseConfigBean">
<property name="escapePattern" value="[?]"/>
</bean>附注,如果在测试运行时使用JPA/Hibernate来生成单元测试模式,那么也需要对Hibernate进行转义。请参考以下答案:https://stackoverflow.com/a/3463189/1034436
https://stackoverflow.com/questions/16800269
复制相似问题