为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

拉莫斯之舞 2023-05-10 17:18:38
在通过 HikariCP 库启动数据库连接时,我需要添加如下所示的 Oracle 数据库属性,但没有在网上找到任何示例。    oracle.jdbc.timezoneAsRegion=true     oracle.jdbc.timestampTzInGmt=true
查看完整描述

3 回答

?
烙印99

TA贡献1829条经验 获得超13个赞

这对我有用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"));

输出:

真真
_


查看完整回答
反对 回复 2023-05-10
?
慕田峪7331174

TA贡献1828条经验 获得超13个赞

这就像addDataSourceProperty在您的中添加新的一样简单DataSource

public 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");

它返回


true

true

使用 HikariCP-2.7.2 和 Oracle 12.1 测试


查看完整回答
反对 回复 2023-05-10
?
手掌心

TA贡献1942条经验 获得超3个赞

你在使用 Spring Boot 吗?


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


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


使用 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


查看完整回答
反对 回复 2023-05-10
  • 3 回答
  • 0 关注
  • 167 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信