回答

收藏

JOOQ:如何将接口添加到生成的记录类中?

技术问答 技术问答 227 人阅读 | 0 人回复 | 2023-09-14

我正在使用Java 8的JOOQ 3.6.从架构中生成一组JOOQ记录。9 H" z" l, t: O7 A3 Q& E" o
假设它们有类似结构的参考数据,有些表是假设它们有的ID,CODE和VALUE列(它们可能有其他列,但至少都有)。- R. B7 O- C- H0 }1 `
在我的代码中(不是因为JOOQ生成),我有一个界面
9 a4 K* F0 ]! O( E* NReferenceData该界面定义了和JOOQ匹配这三列代码的访问器。我想告诉你JOOQ向"implementsReferenceData"它生成的Record对象添加子句(JOOQ已生成的代码将自动实现接口)。
8 y8 b+ ]  r( |% n我不是在问JOOQ我很好地列出了每个表应是否自动找到接口XML配置中实现的接口。
  X  r$ v& b( {* S4 t% d8 c问题1    :不写自定义生成器是否可以配置JOOQ以生成Implements子句?7 `, G7 ?- m4 T/ t5 b$ o; Y& q# x5 Z
如果你必须写一个自定义的生成器-我仍然希望定义实现哪些表记录XML配置中的接口。8 M  v- B7 Y; m) i) G
问题2    :是否有示例定义XML定义的自定义数据向下传输到自定义生成器类别?
/ K, _- M4 J# E; s8 W4 N7 P4 I                                                                7 W/ A  o$ }% f. B4 q, a
    解决方案:                                                               
$ @; }/ g: H" I- b9 U/ X                                                                这可以使用1 U( k4 ?5 _* q; V6 i$ i
发电机策略: a) {. E3 V& P- u+ x
基于匹配器策略XML内置生成器策略)
发电机策略使用生成器策略,您将实现以下代码:% E5 t& m) W3 {2 w
public class MyStrategy extends DefaultGeneratorStrategy    @Override    public List getJavaClassImplements(Definition definition,Mode mode)        if (mode == Mode.RECORD && definition.getQualifiedName().matches("some regex"))            return Arrays.asList(MyCustomInterface.class.getName();然后将上述内容钩入您的代码生成器配置,如下所示:
8 p. R; ^( r3 X' i( ~7 a9 [$ l      com.example.MyStrategy  配对策略使用匹配器策略,您将基本编写:
3 F5 n8 k) N" ], q$ D% I# ^% T            [table][tr][td][table]          A_REGEX_MATCHING_ALL_RELEVANT_TABLES          com.example.MyCustomInterface            如你所见,匹配器策略比生成器策略更容易配置像你这样的简单用例。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则