在 Java 中使用 HikariCP 时如何指定数据库特定属性?

cha*_*ged 5 java oracle spring jdbc hikaricp

我需要在通过 HikariCP 库启动数据库连接时添加如下所示的 Oracle 数据库属性,但在网上没有找到任何示例。

    oracle.jdbc.timezoneAsRegion=true
    oracle.jdbc.timestampTzInGmt=true
Run Code Online (Sandbox Code Playgroud)

jum*_*key 7

这对我有用Spring Boot 2.3.2.RELEASE

应用程序属性:

spring.datasource.hikari.data-source-properties.oracle.jdbc.timezoneAsRegion=true
spring.datasource.hikari.data-source-properties.oracle.jdbc.timestampTzInGmt=true
Run Code Online (Sandbox Code Playgroud)

查看:

@Autowired
private DataSource dataSource;
:
logger.info(dataSource.getConnection().unwrap(OracleConnection.class).getProperties().getProperty("oracle.jdbc.timezoneAsRegion"));
logger.info(dataSource.getConnection().unwrap(OracleConnection.class).getProperties().getProperty("oracle.jdbc.timestampTzInGmt"));
Run Code Online (Sandbox Code Playgroud)

输出:

真实
真实


Dan*_*ves 0

你在使用 Spring Boot 吗?

如果您使用 Spring Boot,您可以尝试通过属性进行设置:

spring.datasource.hikari.*= # Hikari specific settings

https://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html

使用 MySQL 的属性文件的一个示例:

spring.datasource.hikari.mysql.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.hikari.mysql.jdbc-url=jdbc:mysql://10.0.9.198:3306/develop_report?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&rewriteBatchedStatements=true
spring.datasource.hikari.mysql.username=root
spring.datasource.hikari.mysql.password=123456
spring.datasource.hikari.mysql.minimum-idle=5
spring.datasource.hikari.mysql.idle-timeout=180000
spring.datasource.hikari.mysql.maximum-pool-size=20
spring.datasource.hikari.mysql.auto-commit=true
spring.datasource.hikari.mysql.pool-name=Mysql-spring.datasource.hikariCP
spring.datasource.hikari.mysql.max-lifetime=1800000
spring.datasource.hikari.mysql.connection-timeout=30000
spring.datasource.hikari.mysql.connection-test-query=SELECT 1
spring.datasource.hikari.mysql.validation-timeout=5000
Run Code Online (Sandbox Code Playgroud)