【问题标题】:Are enums supported by JDBC?JDBC 是否支持枚举?
【发布时间】:2026-01-06 11:40:02
【问题描述】:

我真的找不到一个很好的枚举 JDBC 映射示例。 JDBC 真的支持 enum 吗?

我正在使用 MySQL。我有一个枚举列,并想映射到一些 Java 枚举。

【问题讨论】:

    标签: java jdbc enums


    【解决方案1】:

    这是一些用于将 JDBC 值转换为 Java 枚举的通用解决方案。

    param = Enum.valueOf((Class<? extends Enum>)dbField.getField().getType(), (String) param);
    

    其中 param 是 db 中字段的值,而 dbField 是 java.reflect.util.Field ,将值放在哪里

    【讨论】:

      【解决方案2】:

      JDBC 不支持枚举。

      您可以将字符串转换为枚举,因此如果您有 Java 枚举,则可以执行类似的操作

       MyEnum enumVal =  MyEnum.valueOf(rs.getString("EnumColumn"));
      

      不过,您必须使您的 java 枚举和 mysql 枚举保持同步。如果字符串没有映射,MyEnum.valueOf() 可以抛出 IllegalArgumentException,如果从 db 中获得 null 值,则抛出 NullPointerException。

      【讨论】: