java - 使用 JOOQ 从表生成枚举类

标签 java mysql enums jooq

我有下表,名为 YNM:

 id  name
 1   YES
 2   NO 
 3   MAYBE

并希望 JOOQ 生成以下 java 枚举:

public enum YNM {
   YES,NO,MAYBE;
}

我知道 JOOQ 3 中放弃了对此的支持,因为它过于复杂/反直觉。有办法实现吗?

提前致谢。

最佳答案

当然,您可以通过几个步骤在您这边重新实现已删除的功能:

1。为该枚举实现生成器

您需要覆盖 JavaGenerator实现用于将主数据(可能是多个表)转换为枚举的代码生成。它是如何工作的完全取决于你,例如你可以:

  • 单列主数据表
  • ID/VALUE 映射表
  • ID/VALUE/Comment 映射表
  • 其他布局

2。生成 ForcedType这些枚举的配置

每当引用这样的主数据表时,您应该使用 <forcedType/> 将外键列重新连接到该枚举。配置。 This is best done by configuring your code generation programmatically ,因为这会让您对 jOOQ 代码生成配置有更多的动态控制。

This step is documented more in detail in Bill O'Neil's answer .

3。防止生成主数据表

除上述之外,您可能应该从生成的输出中删除主数据表本身。在您的情况下,这应该导致配置:

<excludes>YNM</excludes>

或者,如果您有多个主数据表:

<excludes>YNM|OTHER_MASTER_DATA_TABLE|...</excludes>

排除这些表将阻止从 jOOQ 客户端代码访问它们,并删除生成代码中的外键信息,这可能会造成混淆。

关于java - 使用 JOOQ 从表生成枚举类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46429671/

相关文章:

java - JOOQ:在具有多个转换器的联合查询中忽略临时转换器

MySql - 跨不同服务器的联合

c++ - 为类模板的枚举成员定义 std::hash

c# - 如何将多个枚举传递给只接收一个的方法?

java - 我可以在 VB.NET 中给枚举一个属性吗(就像我可以在 Java 中做的那样)?

java - 设置内容 View 在我的主页 fragment 上不起作用

java - 创建计数数组的最有效方法

java - 有没有一种很好的方法可以在不将整数转换为字符串的情况下用零填充整数?

c# - 如何使用 C# 从 mySQL 获取图像文件路径

mysql - 自动生成数据库图 MySQL