JOOQ: how do I add an interface to a generated Record Class

前端 未结 1 1914
無奈伤痛
無奈伤痛 2021-02-14 08:10

I am generating a set of JOOQ records from a schema using JOOQ 3.6.4 with Java 8.

Some of the tables are reference data that are similarly structured, let\'s say they ha

相关标签:
1条回答
  • 2021-02-14 09:00

    This can be done using

    • Generator strategies
    • Matcher strategies (which are built-in, XML-based generator strategies)

    Generator strategy

    With a generator strategy, you'll implement the following code:

    public class MyStrategy extends DefaultGeneratorStrategy {
        @Override
        public List<String> getJavaClassImplements(Definition definition, Mode mode) {
            if (mode == Mode.RECORD && definition.getQualifiedName().matches("some regex")) {
                return Arrays.asList(MyCustomInterface.class.getName());
            }
        }
    }
    

    The above can then be hooked into your code generator configuration as such:

    <generator>
      <strategy>
        <name>com.example.MyStrategy</name>
      </strategy>
    </generator>
    

    Matcher strategy

    With a matcher strategy, you'll essentially write:

    <generator>
      <strategy>
        <matchers>
          <tables>
            <table>
              <expression>A_REGEX_MATCHING_ALL_RELEVANT_TABLES</expression>
              <recordImplements>com.example.MyCustomInterface</recordImplements>
            </table>
          </tables>
        </matchers>
      </strategy>
    </generator>
    

    As you can see, matcher strategies are easier to configure than generator strategy, for simple use-cases like yours.

    0 讨论(0)
提交回复
热议问题