我有一个使用spring jdbc模板的spring boot应用程序,用于DAO层连接到Oracle DB。数据库用户名与运行查询的模式不同。因此,当运行查询时,它需要使用不同的模式运行,我不想为模式的硬编码值添加前缀(对于ex select * from user1.table.....
)
我研究了一下,无法找到一种简单直接的方法。
对于ex,如果我使用JPA,我可以简单地配置属性spring.jpa.properties.hibernate.default_schema=<schema name>
但是在使用spring jdbc
答案 0 :(得分:0)
我遇到了类似的问题,并没有找到理想的方法来做到这一点。当应用程序加载时,我最终在SQL中设置了架构。至少我能够重用spring.jpa.properties.hibernate.default_schema
,我已经为JPA默认模式设置了final String schemaName = jpaProperties.getProperties().get("hibernate.default_schema");
jdbcTemplate.execute("SET SCHEMA '" + schemaName + "'");
。
<Application x:Class="WpfResources.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
StartupUri="MainWindow.xaml">
<Application.Resources>
<ResourceDictionary>
<Color x:Key="MyColor">GreenYellow</Color>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Dictionary1.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
</Application>
这显然不太理想,但它比在多个地方定义您的架构更好。
(注意:我自动安装了JpaProperties和JdbcTemplate。)
答案 1 :(得分:-1)
您需要使用Oracle JDBC驱动程序。
一个很好的例子:
来自mykong文章:
# Oracle settings
spring.datasource.url=jdbc:oracle:thin:@localhost:1521:xe
spring.datasource.username=system
spring.datasource.password=password
spring.datasource.driver-class-oracle.jdbc.driver.OracleDriver
https://www.mkyong.com/spring-boot/spring-boot-spring-data-jpa-oracle-example/