我在生产环境中使用Oracle,我想使用H2进行测试.我可以打字;
<jdbc:embedded-database id="dataSource">
<jdbc:script location="classpath:schema.sql"/>
<jdbc:script location="classpath:test-data.sql"/>
</jdbc:embedded-database>
Run Code Online (Sandbox Code Playgroud)
所以我的表和脚本是自动创建的.但是我无法设置此db的URL值.(对于H2-Oracle兼容性,我应该添加; MODE = Oracle到url部分)
有没有办法实现这个目标?
或者只是相反的解决方案;
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="org.h2.Driver"/>
<property name="url" value="jdbc:h2:file:h2\db"/>
<property name="username" value="sa"/>
<property name="password" value=""/>
</bean>
Run Code Online (Sandbox Code Playgroud)
在这个时候,我可以编辑URL部分,但是如何将默认测试脚本(创建和数据sqls)加载到此数据源?
asy*_*ard 22
这种技术解决了这个问题;
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="${jdbc.driverClassName}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</bean>
Run Code Online (Sandbox Code Playgroud)
然后添加此标记和定义;
<jdbc:initialize-database data-source="dataSource" ignore-failures="DROPS">
<jdbc:script location="classpath:testdb/schema.sql" />
<jdbc:script location="classpath:testdb/data.sql" />
</jdbc:initialize-database>
Run Code Online (Sandbox Code Playgroud)
Tho*_*ler 13
也许这会有所帮助:H2支持INIT脚本(打开连接时执行的SQL脚本).数据库URL在XML文件中如下所示:
<property name="url" value="jdbc:h2:file:h2\db;INIT=
RUNSCRIPT FROM 'classpath:schema.sql'\;
RUNSCRIPT FROM 'classpath:test-data.sql'"/>
Run Code Online (Sandbox Code Playgroud)
(;需要使用反斜杠进行转义).
| 归档时间: |
|
| 查看次数: |
30212 次 |
| 最近记录: |