我想在数据库环境是动态的服务器上使用 jooq

Posted

技术标签:

【中文标题】我想在数据库环境是动态的服务器上使用 jooq【英文标题】:I want to use jooq on a server where the DB environment is dynamic 【发布时间】:2019-01-06 10:39:49 【问题描述】:

我想在 spring boot 2 gradle 环境中使用 jooq。 但有一个问题。 build.gradle 文件需要硬编码的数据库信息,但可用。 我可以在 QueryDSL 中只创建像 QClass 这样的 JClass 吗?

我在服务器的外部环境 创建动态数据源,例如 ClassName、UserName、Password 和 URL。 硬编码的jooq不能用。

在jooq中

jooq
    version = '3.11.2'
    sample(sourceSets.main) 
        jdbc 
            driver = 'org.postgresql.Driver'
            url = 'jdbc:mysql//localhost:3306/sample'
            user = 'some_user'
            password = 'secret'
....

============ jdbc 连接信息应该是硬编码的,如图所示。 但我想要一个基于外部服务器设置的动态 jooq 设置。 一般来说,动态数据源生成方法已经在使用中。

帮助! 很抱歉我不会说英语。

【问题讨论】:

您始终可以使用手册中记录的编程代码生成配置:jooq.org/doc/latest/manual/code-generation/codegen-programmatic、jooq.org/doc/latest/manual/code-generation/codegen-gradle,但这可能会阻止使用一堆有用的 Gradle 构建功能... 【参考方案1】:

您可以在配置类中构建数据源,而不是在 application.yml 中硬编码值。像这样的:

@Bean
private DataSource buildDataSource() 
    final BasicDataSource dataSource = new BasicDataSource();
    dataSource.setUrl(env.getProperty("dataSource.url")+ "_somevalue");
    dataSource.setUsername(env.getProperty("dataSource.username"));
    dataSource.setPassword(env.getProperty("dataSource.password"));
    return dataSource;

所以你可以使用一些逻辑来定义数据源 url、用户名、密码。

【讨论】:

在 jooq =========== jooq version = '3.11.2' sample (sourceSets.main) jdbc driver = 'org.postgresql.Driver' url = 'jdbc: postgresql: // localhost: 5432 / sample' user = 'some_user' password = 'secret' ...... =========== jdbc连接信息应该硬编码为显示。但我想要一个基于外部服务器设置的动态 jooq 设置。一般来说,动态数据源生成方法已经在使用中。

以上是关于我想在数据库环境是动态的服务器上使用 jooq的主要内容,如果未能解决你的问题,请参考以下文章

jOOQ(Java)-SQL 翻译 API 可以自托管吗?

如何一起使用Spring启动,JOOQ和Flyway?

Spring boot、JOOQ和Flyway如何一起使用?

在 Jooq 中集成 Hikari 池

将 JooQ 与 SQL Server 一起使用,getTables() 方法返回服务器上所有数据库中的所有表

适合不同环境的 Jooq