可用版本: Dev (3.21) | 最新 (3.20) | 3.19 | 3.18 | 3.17 | 3.16 | 3.15 | 3.14

匹配可嵌入项

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

以下示例展示了如何为生成的 org.jooq.EmbeddableRecord 类型和相关对象定义 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 embeddable matchers to provide a strategy for naming objects created from embeddables. -->
        <embeddables>
          <embeddable>

            <!-- Match unqualified or qualified embeddable names. If left empty, this matcher applies to all embeddables. -->
            <expression>MY_EMBEDDABLE</expression>

            <!-- These elements influence the naming of a generated org.jooq.EmbeddableRecord object. -->
            <recordClass> a MatcherRule specification </recordClass>
            <recordExtends>com.example.MyOptionalRoutineBaseType</recordExtends>
            <recordImplements>com.example.MyOptionalCustomInterface</recordImplements>

            <!-- These elements influence the naming of a generated interface, implemented by
                 generated org.jooq.EmbeddableRecord objects and by generated POJOs. -->
            <interfaceClass> a MatcherRule specification </interfaceClass>
            <interfaceImplements>com.example.MyOptionalCustomInterface</interfaceImplements>

            <!-- These elements influence the naming of a generated POJO object.  -->
            <pojoClass> a MatcherRule specification </pojoClass>
            <pojoExtends>com.example.MyOptionalCustomBaseClass</pojoExtends>
            <pojoImplements>com.example.MyOptionalCustomInterface</pojoImplements>
          </embeddable>
        </embeddables>
      </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 embeddable matchers to provide a strategy for naming objects created from embeddables.
        .withEmbeddables(
          new MatchersEmbeddableType()

            // Match unqualified or qualified embeddable names. If left empty, this matcher applies to all embeddables.
            .withExpression("MY_EMBEDDABLE")

            // These elements influence the naming of a generated org.jooq.EmbeddableRecord object.
            .withRecordClass(MatcherRule. a MatcherRule specification )
            .withRecordExtends("com.example.MyOptionalRoutineBaseType")
            .withRecordImplements("com.example.MyOptionalCustomInterface")

            // These elements influence the naming of a generated interface, implemented by
            // generated org.jooq.EmbeddableRecord objects and by generated POJOs.
            .withInterfaceClass(MatcherRule. a MatcherRule specification )
            .withInterfaceImplements("com.example.MyOptionalCustomInterface")

            // These elements influence the naming of a generated POJO object.
            .withPojoClass(MatcherRule. a MatcherRule specification )
            .withPojoExtends("com.example.MyOptionalCustomBaseClass")
            .withPojoImplements("com.example.MyOptionalCustomInterface")
        )
      )
    )
  )

有关更多详细信息,请参阅配置 XSD程序化代码生成

import org.jooq.meta.jaxb.*


configuration {

  // These properties can be added directly to the generator element:
  generator {
    strategy {
      matchers {

        // Specify 0..n embeddable matchers to provide a strategy for naming objects created from embeddables.
        embeddables {
          embeddable {

            // Match unqualified or qualified embeddable names. If left empty, this matcher applies to all embeddables.
            expression = "MY_EMBEDDABLE"

            // These elements influence the naming of a generated org.jooq.EmbeddableRecord object.
            recordClass = MatcherRule. a MatcherRule specification 
            recordExtends = "com.example.MyOptionalRoutineBaseType"
            recordImplements = "com.example.MyOptionalCustomInterface"

            // These elements influence the naming of a generated interface, implemented by
            // generated org.jooq.EmbeddableRecord objects and by generated POJOs.
            interfaceClass = MatcherRule. a MatcherRule specification 
            interfaceImplements = "com.example.MyOptionalCustomInterface"

            // These elements influence the naming of a generated POJO object.
            pojoClass = MatcherRule. a MatcherRule specification 
            pojoExtends = "com.example.MyOptionalCustomBaseClass"
            pojoImplements = "com.example.MyOptionalCustomInterface"
          }
        }
      }
    }
  }
}

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

configuration {

  // These properties can be added directly to the generator element:
  generator {
    strategy {
      matchers {

        // Specify 0..n embeddable matchers to provide a strategy for naming objects created from embeddables.
        embeddables {
          embeddable {

            // Match unqualified or qualified embeddable names. If left empty, this matcher applies to all embeddables.
            expression = "MY_EMBEDDABLE"

            // These elements influence the naming of a generated org.jooq.EmbeddableRecord object.
            recordClass = " a MatcherRule specification "
            recordExtends = "com.example.MyOptionalRoutineBaseType"
            recordImplements = "com.example.MyOptionalCustomInterface"

            // These elements influence the naming of a generated interface, implemented by
            // generated org.jooq.EmbeddableRecord objects and by generated POJOs.
            interfaceClass = " a MatcherRule specification "
            interfaceImplements = "com.example.MyOptionalCustomInterface"

            // These elements influence the naming of a generated POJO object.
            pojoClass = " a MatcherRule specification "
            pojoExtends = "com.example.MyOptionalCustomBaseClass"
            pojoImplements = "com.example.MyOptionalCustomInterface"
          }
        }
      }
    }
  }
}

有关更多详细信息,请参阅配置 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.

一如既往,当使用正则表达式时,它们是具有默认标志的正则表达式

当使用任何 recordExtends 等设置时,您必须确保正确实现 jOOQ 内部 API,这些 API 在此处未记录,因为它们是内部 API。 特别是,如果您正在扩展 org.jooq.impl.TableImpl,例如,您的自定义基类可能会在 jOOQ 的小版本之间中断,因为添加了新的构造函数。

有关 MatcherRule 规范的更多信息,请参见MatcherRule

反馈

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

The jOOQ Logo