【问题标题】:jooq specify database runtimejooq 指定数据库运行时
【发布时间】:2019-03-30 17:21:59
【问题描述】:

我对多个数据库(和数据库服务器)有完全相同的数据库定义。如何告诉 Jooq 使用与我创建的“连接”相同的数据库来连接数据库?

示例(用于 MySQL):

  1. jdbc:mysql://localhost:3306/tsm - 我的开发数据库(tsm),用于生成代码
  2. jdbc:mysql://RemoteAmazonDBHost:3306/customer1 - 我的一位客户
  3. jdbc:mysql://RemoteAmazonDBHost:3306/customer2 - 另一个客户

所有 3 个数据库都具有相同的定义、相同的表、索引等。TSM 是我们的应用程序使用的标准。

也许我应该使用DSL.using( Connection, Setting ) 而不是DSL.using(Connection)?这就是手册所暗示的here

如果我只有一个“输入”模式,我必须指定它吗?换句话说,我可以这样做吗:

        Settings settings = new Settings()
                .withRenderMapping(new RenderMapping()
                .withSchemata(
                    new MappedSchema().withOutput(
                            databaseInfo.getProperties().getProperty("database.db"))));

或者我必须这样做:

        Settings settings = new Settings()
                .withRenderMapping(new RenderMapping()
                .withSchemata(
                    new MappedSchema().withInput("TSM")
                                      .withOutput(databaseInfo.getProperties().getProperty("database.db"))));

【问题讨论】:

    标签: mysql jooq


    【解决方案1】:

    我假设您正在使用代码生成。在这种情况下,最简单的方法可能是根本不生成架构,而是在代码生成配置中使用<outputSchemaToDefault>,例如

    <configuration>
      <generator>
        <database>
          <inputSchema>your_codegen_input_schema_here</inputSchema>
          <outputSchemaToDefault>true</outputSchemaToDefault>
        </database>
      </generator>
    </configuration>
    

    详见说明书:https://www.jooq.org/doc/latest/manual/code-generation/codegen-advanced/codegen-config-database/codegen-database-catalog-and-schema-mapping/

    如果您希望生成的代码具有模式限定并在运行时映射事物,那么您的第二次尝试似乎是正确的。将此传递给您的Configuration(即DSL.using() 调用):

    Settings settings = new Settings()
        .withRenderMapping(new RenderMapping()
            .withSchemata(new MappedSchema()
                .withInput("TSM")
                .withOutput(databaseInfo.getProperties().getProperty("database.db"))));
    

    更多详情可以在这里找到:https://www.jooq.org/doc/latest/manual/sql-building/dsl-context/custom-settings/settings-render-mapping

    【讨论】:

      猜你喜欢
      • 2016-06-23
      • 1970-01-01
      • 2020-12-21
      • 2020-10-14
      • 2021-02-28
      • 2021-06-25
      • 2021-12-20
      • 2018-09-02
      • 1970-01-01
      相关资源
      最近更新 更多