目录和模式版本提供程序
适用于 ✅ 开源版 ✅ 专业版 ✅ 企业版
出于持续集成的原因,用户通常希望对数据库模式进行版本控制,例如使用 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.
反馈
您对此页面有任何反馈吗? 我们很乐意倾听您的意见!