匹配表
适用于 ✅ 开源版 ✅ 专业版 ✅ 企业版
以下示例展示了如何为生成的 org.jooq.Table
和 org.jooq.TableRecord
类型和相关对象定义 MatcherStrategy
XML(独立和 Maven)
编程方式
Gradle (Kotlin)
Gradle (Groovy)
Gradle(第三方)
<configuration> <!-- These properties can be added directly to the generator element: --> <generator> <strategy> <matchers> <!-- Specify 0..n table matchers to provide a strategy for naming objects created from tables. --> <tables> <table> <!-- Match unqualified or qualified table names. If left empty, this matcher applies to all tables. --> <expression>MY_TABLE</expression> <!-- These elements influence the naming of a generated org.jooq.Table object. --> <tableClass> a MatcherRule specification </tableClass> <tableIdentifier> a MatcherRule specification </tableIdentifier> <tableExtends>com.example.MyOptionalTableBaseType</tableExtends> <tableImplements>com.example.MyOptionalCustomInterface</tableImplements> <!-- These elements influence the naming of a generated org.jooq.Table & org.jooq.Path object. --> <pathClass> a MatcherRule specification </pathClass> <pathExtends>com.example.MyOptionalTableBaseType</pathExtends> <pathImplements>com.example.MyOptionalCustomInterface</pathImplements> <!-- These elements influence the naming of a generated org.jooq.Record object. --> <recordClass> a MatcherRule specification </recordClass> <recordExtends>com.example.MyOptionalRecordBaseType</recordExtends> <recordImplements>com.example.MyOptionalCustomInterface</recordImplements> <!-- These elements influence the naming of a generated interface, implemented by generated org.jooq.Record objects and by generated POJOs. --> <interfaceClass> a MatcherRule specification </interfaceClass> <interfaceImplements>com.example.MyOptionalCustomInterface</interfaceImplements> <!-- These elements influence the naming of a generated org.jooq.DAO object. --> <daoClass> a MatcherRule specification </daoClass> <daoExtends>com.example.MyOptionalDAOBaseType</daoExtends> <daoImplements>com.example.MyOptionalCustomInterface</daoImplements> <!-- These elements influence the naming of a generated POJO object. --> <pojoClass> a MatcherRule specification </pojoClass> <pojoExtends>com.example.MyOptionalPojoBaseClass</pojoExtends> <pojoImplements>com.example.MyOptionalCustomInterface</pojoImplements> </table> </tables> </matchers> </strategy> </generator> </configuration>
有关更多详细信息,请参见 配置 XSD、独立代码生成 以及 maven 代码生成。
new org.jooq.meta.jaxb.Configuration() // These properties can be added directly to the generator element: .withGenerator(new Generator() .withStrategy(new Strategy() .withMatchers(new Matchers() // Specify 0..n table matchers to provide a strategy for naming objects created from tables. .withTables( new MatchersTableType() // Match unqualified or qualified table names. If left empty, this matcher applies to all tables. .withExpression("MY_TABLE") // These elements influence the naming of a generated org.jooq.Table object. .withTableClass(MatcherRule. a MatcherRule specification ) .withTableIdentifier(MatcherRule. a MatcherRule specification ) .withTableExtends("com.example.MyOptionalTableBaseType") .withTableImplements("com.example.MyOptionalCustomInterface") // These elements influence the naming of a generated org.jooq.Table & org.jooq.Path object. .withPathClass(MatcherRule. a MatcherRule specification ) .withPathExtends(MatcherRule.com.example.MyOptionalTableBaseType) .withPathImplements(MatcherRule.com.example.MyOptionalCustomInterface) // These elements influence the naming of a generated org.jooq.Record object. .withRecordClass(MatcherRule. a MatcherRule specification ) .withRecordExtends("com.example.MyOptionalRecordBaseType") .withRecordImplements("com.example.MyOptionalCustomInterface") // These elements influence the naming of a generated interface, implemented by // generated org.jooq.Record objects and by generated POJOs. .withInterfaceClass(MatcherRule. a MatcherRule specification ) .withInterfaceImplements("com.example.MyOptionalCustomInterface") // These elements influence the naming of a generated org.jooq.DAO object. .withDaoClass(MatcherRule. a MatcherRule specification ) .withDaoExtends("com.example.MyOptionalDAOBaseType") .withDaoImplements("com.example.MyOptionalCustomInterface") // These elements influence the naming of a generated POJO object. .withPojoClass(MatcherRule. a MatcherRule specification ) .withPojoExtends("com.example.MyOptionalPojoBaseClass") .withPojoImplements("com.example.MyOptionalCustomInterface") ) ) ) )
import org.jooq.meta.jaxb.* configuration { // These properties can be added directly to the generator element: generator { strategy { matchers { // Specify 0..n table matchers to provide a strategy for naming objects created from tables. tables { table { // Match unqualified or qualified table names. If left empty, this matcher applies to all tables. expression = "MY_TABLE" // These elements influence the naming of a generated org.jooq.Table object. tableClass = MatcherRule. a MatcherRule specification tableIdentifier = MatcherRule. a MatcherRule specification tableExtends = "com.example.MyOptionalTableBaseType" tableImplements = "com.example.MyOptionalCustomInterface" // These elements influence the naming of a generated org.jooq.Table & org.jooq.Path object. pathClass = MatcherRule. a MatcherRule specification pathExtends = MatcherRule.com.example.MyOptionalTableBaseType pathImplements = MatcherRule.com.example.MyOptionalCustomInterface // These elements influence the naming of a generated org.jooq.Record object. recordClass = MatcherRule. a MatcherRule specification recordExtends = "com.example.MyOptionalRecordBaseType" recordImplements = "com.example.MyOptionalCustomInterface" // These elements influence the naming of a generated interface, implemented by // generated org.jooq.Record objects and by generated POJOs. interfaceClass = MatcherRule. a MatcherRule specification interfaceImplements = "com.example.MyOptionalCustomInterface" // These elements influence the naming of a generated org.jooq.DAO object. daoClass = MatcherRule. a MatcherRule specification daoExtends = "com.example.MyOptionalDAOBaseType" daoImplements = "com.example.MyOptionalCustomInterface" // These elements influence the naming of a generated POJO object. pojoClass = MatcherRule. a MatcherRule specification pojoExtends = "com.example.MyOptionalPojoBaseClass" pojoImplements = "com.example.MyOptionalCustomInterface" } } } } } }
有关更多详细信息,请参见 配置 XSD 和 gradle 代码生成。
configuration { // These properties can be added directly to the generator element: generator { strategy { matchers { // Specify 0..n table matchers to provide a strategy for naming objects created from tables. tables { table { // Match unqualified or qualified table names. If left empty, this matcher applies to all tables. expression = "MY_TABLE" // These elements influence the naming of a generated org.jooq.Table object. tableClass = " a MatcherRule specification " tableIdentifier = " a MatcherRule specification " tableExtends = "com.example.MyOptionalTableBaseType" tableImplements = "com.example.MyOptionalCustomInterface" // These elements influence the naming of a generated org.jooq.Table & org.jooq.Path object. pathClass = " a MatcherRule specification " pathExtends = "com.example.MyOptionalTableBaseType" pathImplements = "com.example.MyOptionalCustomInterface" // These elements influence the naming of a generated org.jooq.Record object. recordClass = " a MatcherRule specification " recordExtends = "com.example.MyOptionalRecordBaseType" recordImplements = "com.example.MyOptionalCustomInterface" // These elements influence the naming of a generated interface, implemented by // generated org.jooq.Record objects and by generated POJOs. interfaceClass = " a MatcherRule specification " interfaceImplements = "com.example.MyOptionalCustomInterface" // These elements influence the naming of a generated org.jooq.DAO object. daoClass = " a MatcherRule specification " daoExtends = "com.example.MyOptionalDAOBaseType" daoImplements = "com.example.MyOptionalCustomInterface" // These elements influence the naming of a generated POJO object. pojoClass = " a MatcherRule specification " pojoExtends = "com.example.MyOptionalPojoBaseClass" pojoImplements = "com.example.MyOptionalCustomInterface" } } } } } }
有关更多详细信息,请参见 配置 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.
一如既往,当使用正则表达式时,它们是具有默认标志的正则表达式。
当使用任何tableExtends
,recordExtends
等设置时,您必须确保正确实现内部 jOOQ API,因为它们是内部的,因此此处未进行记录。 特别是,如果您要扩展org.jooq.impl.TableImpl
,例如,您的自定义基类可能会在 jOOQ 的次要版本之间中断,因为添加了新的构造函数。
如果您的TableRecord
、POJO 类或接口扩展或实现了其他类型,您可以为相应的 字段 指定override
修饰符。
有关 MatcherRule
规范的更多信息,请参见MatcherRule。
反馈
您对此页面有任何反馈吗? 我们很乐意听取您的意见!