猿问

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

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

    oracle.jdbc.timezoneAsRegion=true
    oracle.jdbc.timestampTzInGmt=true


拉莫斯之舞
浏览 168回答 3
3回答

烙印99

这对我有用Spring Boot 2.3.2.RELEASE:application.properties:spring.datasource.hikari.data-source-properties.oracle.jdbc.timezoneAsRegion=true spring.datasource.hikari.data-source-properties.oracle.jdbc.timestampTzInGmt=true查看:@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"));输出:真真_

慕田峪7331174

这就像addDataSourceProperty在您的中添加新的一样简单DataSourcepublic class DataSource {    private static HikariConfig config = new HikariConfig();    private static HikariDataSource ds;    static {        config.setJdbcUrl( "jdbc_url" );        config.setUsername( "database_username" );        config.setPassword( "database_password" );        ....        config.addDataSourceProperty( "oracle.jdbc.timezoneAsRegion" , "true" );        config.addDataSourceProperty( "oracle.jdbc.timestampTzInGmt" , "true" );        ds = new HikariDataSource( config );    }    private DataSource() {}    public static Connection getConnection() throws SQLException {        return ds.getConnection();    }}要验证连接中的设置,您必须先解包以获取 Oracle 连接def hkConn = DataSource.getConnection() def conn  = hkConn.unwrap(OracleConnection.class); println conn.getProperties().getProperty("oracle.jdbc.timezoneAsRegion");println conn.getProperties().getProperty("oracle.jdbc.timestampTzInGmt");它返回truetrue使用 HikariCP-2.7.2 和 Oracle 12.1 测试

手掌心

你在使用 Spring Boot 吗?如果您使用的是 Spring Boot,则可以尝试通过属性进行设置:spring.datasource.hikari.*= # Hikari specific settings使用 MySQL 的属性文件示例之一:spring.datasource.hikari.mysql.driver-class-name=com.mysql.jdbc.Driverspring.datasource.hikari.mysql.jdbc-url=jdbc:mysql://10.0.9.198:3306/develop_report?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&rewriteBatchedStatements=truespring.datasource.hikari.mysql.username=rootspring.datasource.hikari.mysql.password=123456spring.datasource.hikari.mysql.minimum-idle=5spring.datasource.hikari.mysql.idle-timeout=180000spring.datasource.hikari.mysql.maximum-pool-size=20spring.datasource.hikari.mysql.auto-commit=truespring.datasource.hikari.mysql.pool-name=Mysql-spring.datasource.hikariCPspring.datasource.hikari.mysql.max-lifetime=1800000spring.datasource.hikari.mysql.connection-timeout=30000spring.datasource.hikari.mysql.connection-test-query=SELECT 1spring.datasource.hikari.mysql.validation-timeout=5000
随时随地看视频慕课网APP

相关分类

Java
我要回答