可用版本: 开发版 (3.21) | 最新版 (3.20) | 3.19 | 3.18 | 3.17 | 3.16 | 3.15 | 3.14 | 3.13 | 3.12 | 3.11

目录和模式版本提供程序

适用于 ✅ 开源版   ✅ 专业版   ✅ 企业版

出于持续集成的原因,用户通常希望对数据库模式进行版本控制,例如使用 Flyway 等工具。在这些情况下,通常最好将目录和/或模式版本与生成的 jOOQ 代码放在一起,以便于文档编制并防止不必要的目录和/或模式重新生成。

因此,jOOQ 允许实现一个简单的代码生成 SPI,该 SPI 告诉 jOOQ 任何给定目录或模式的用户定义版本是什么。

有三种可能的方法来实现此 SPI

  • 通过提供完全限定的类名,该类名分别实现 org.jooq.meta.CatalogVersionProviderorg.jooq.meta.SchemaVersionProvider 中的任何一个,以用于编程方式的版本提供。
  • 通过提供一个 SELECT 语句,该语句返回一行,其中一列包含版本字符串。 SELECT 语句可以包含名为 :catalog_name:schema_name 的命名变量。
  • 通过提供一个常量,例如 Maven 属性。

这些模式版本将生成到生成工件上的 javax.annotation.Generated 注释中。

示例:完全限定的类名

此示例假设您的代码生成类路径上提供了版本提供程序类

XML(独立和 Maven)
编程方式
Gradle (Kotlin)
Gradle (Groovy)
Gradle(第三方)
<configuration>
  <generator>
    <database>
      <catalogVersionProvider>com.example.MyCatalogVersionProvider</catalogVersionProvider>
      <schemaVersionProvider>com.example.MySchemaVersionProvider</schemaVersionProvider>
    </database>
  </generator>
</configuration>

有关更多详细信息,请参见配置 XSD独立代码生成maven 代码生成

new org.jooq.meta.jaxb.Configuration()
  .withGenerator(new Generator()
    .withDatabase(new Database()
      .withCatalogVersionProvider("com.example.MyCatalogVersionProvider")
      .withSchemaVersionProvider("com.example.MySchemaVersionProvider")
    )
  )

有关更多详细信息,请参见配置 XSD编程代码生成

import org.jooq.meta.jaxb.*


configuration {
  generator {
    database {
      catalogVersionProvider = "com.example.MyCatalogVersionProvider"
      schemaVersionProvider = "com.example.MySchemaVersionProvider"
    }
  }
}

有关更多详细信息,请参见配置 XSDgradle 代码生成

configuration {
  generator {
    database {
      catalogVersionProvider = "com.example.MyCatalogVersionProvider"
      schemaVersionProvider = "com.example.MySchemaVersionProvider"
    }
  }
}

有关更多详细信息,请参见配置 XSDgradle 代码生成

// The jOOQ-codegen-gradle plugin has been introduced in version 3.19.
// Please use the official plugin instead of the third party plugin that was recommended before.
确保您的自定义版本提供程序可作为 代码生成器依赖项 用于代码生成器
XML(独立和 Maven)
编程方式
Gradle (Kotlin)
Gradle (Groovy)
Gradle(第三方)
<configuration>
  <generator>
    <database>
      <catalogVersionProvider>SELECT :catalog_name || '_' || MAX("version") FROM "schema_version"</catalogVersionProvider>
      <schemaVersionProvider>SELECT :schema_name || '_' || MAX("version") FROM "schema_version"</schemaVersionProvider>
    </database>
  </generator>
</configuration>

有关更多详细信息,请参见配置 XSD独立代码生成maven 代码生成

new org.jooq.meta.jaxb.Configuration()
  .withGenerator(new Generator()
    .withDatabase(new Database()
      .withCatalogVersionProvider("SELECT :catalog_name || '_' || MAX(\"version\") FROM \"schema_version\"")
      .withSchemaVersionProvider("SELECT :schema_name || '_' || MAX(\"version\") FROM \"schema_version\"")
    )
  )

有关更多详细信息,请参见配置 XSD编程代码生成

import org.jooq.meta.jaxb.*


configuration {
  generator {
    database {
      catalogVersionProvider = "SELECT :catalog_name || '_' || MAX(\"version\") FROM \"schema_version\""
      schemaVersionProvider = "SELECT :schema_name || '_' || MAX(\"version\") FROM \"schema_version\""
    }
  }
}

有关更多详细信息,请参见配置 XSDgradle 代码生成

configuration {
  generator {
    database {
      catalogVersionProvider = "SELECT :catalog_name || '_' || MAX(\"version\") FROM \"schema_version\""
      schemaVersionProvider = "SELECT :schema_name || '_' || MAX(\"version\") FROM \"schema_version\""
    }
  }
}

有关更多详细信息,请参见配置 XSDgradle 代码生成

// The jOOQ-codegen-gradle plugin has been introduced in version 3.19.
// Please use the official plugin instead of the third party plugin that was recommended before.

示例:常量

除了直接在配置中提供常量外,还可以使用构建系统的属性表达式或其他机制来生成此常量。

XML(独立和 Maven)
编程方式
Gradle (Kotlin)
Gradle (Groovy)
Gradle(第三方)
<configuration>
  <generator>
    <database>
      <catalogVersionProvider>1</catalogVersionProvider>
      <schemaVersionProvider>2</schemaVersionProvider>
    </database>
  </generator>
</configuration>

有关更多详细信息,请参见配置 XSD独立代码生成maven 代码生成

new org.jooq.meta.jaxb.Configuration()
  .withGenerator(new Generator()
    .withDatabase(new Database()
      .withCatalogVersionProvider(1)
      .withSchemaVersionProvider(2)
    )
  )

有关更多详细信息,请参见配置 XSD编程代码生成

import org.jooq.meta.jaxb.*


configuration {
  generator {
    database {
      catalogVersionProvider = 1
      schemaVersionProvider = 2
    }
  }
}

有关更多详细信息,请参见配置 XSDgradle 代码生成

configuration {
  generator {
    database {
      catalogVersionProvider = 1
      schemaVersionProvider = 2
    }
  }
}

有关更多详细信息,请参见配置 XSDgradle 代码生成

// The jOOQ-codegen-gradle plugin has been introduced in version 3.19.
// Please use the official plugin instead of the third party plugin that was recommended before.

反馈

您对此页面有任何反馈吗? 我们很乐意倾听您的意见!

The jOOQ Logo