目录和模式版本提供程序
适用于 ✅ 开源版 ✅ 专业版 ✅ 企业版
出于持续集成的原因,用户通常希望对数据库模式进行版本控制,例如使用 Flyway 等工具。在这些情况下,通常最好将目录和/或模式版本与生成的 jOOQ 代码放在一起,以便于文档编制并防止不必要的目录和/或模式重新生成。
因此,jOOQ 允许实现一个简单的代码生成 SPI,该 SPI 告诉 jOOQ 任何给定目录或模式的用户定义版本是什么。
有三种可能的方法来实现此 SPI
- 通过提供完全限定的类名,该类名分别实现
org.jooq.meta.CatalogVersionProvider
或org.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") ) )
import org.jooq.meta.jaxb.* configuration { generator { database { catalogVersionProvider = "com.example.MyCatalogVersionProvider" schemaVersionProvider = "com.example.MySchemaVersionProvider" } } }
有关更多详细信息,请参见配置 XSD 和 gradle 代码生成。
configuration { generator { database { catalogVersionProvider = "com.example.MyCatalogVersionProvider" schemaVersionProvider = "com.example.MySchemaVersionProvider" } } }
有关更多详细信息,请参见配置 XSD 和 gradle 代码生成。
// 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\"") ) )
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\"" } } }
有关更多详细信息,请参见配置 XSD 和 gradle 代码生成。
configuration { generator { database { catalogVersionProvider = "SELECT :catalog_name || '_' || MAX(\"version\") FROM \"schema_version\"" schemaVersionProvider = "SELECT :schema_name || '_' || MAX(\"version\") FROM \"schema_version\"" } } }
有关更多详细信息,请参见配置 XSD 和 gradle 代码生成。
// 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) ) )
import org.jooq.meta.jaxb.* configuration { generator { database { catalogVersionProvider = 1 schemaVersionProvider = 2 } } }
有关更多详细信息,请参见配置 XSD 和 gradle 代码生成。
configuration { generator { database { catalogVersionProvider = 1 schemaVersionProvider = 2 } } }
有关更多详细信息,请参见配置 XSD 和 gradle 代码生成。
// 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.
反馈
您对此页面有任何反馈吗? 我们很乐意倾听您的意见!