【发布时间】:2026-01-06 11:40:02
【问题描述】:
我真的找不到一个很好的枚举 JDBC 映射示例。 JDBC 真的支持 enum 吗?
我正在使用 MySQL。我有一个枚举列,并想映射到一些 Java 枚举。
【问题讨论】:
我真的找不到一个很好的枚举 JDBC 映射示例。 JDBC 真的支持 enum 吗?
我正在使用 MySQL。我有一个枚举列,并想映射到一些 Java 枚举。
【问题讨论】:
这是一些用于将 JDBC 值转换为 Java 枚举的通用解决方案。
param = Enum.valueOf((Class<? extends Enum>)dbField.getField().getType(), (String) param);
其中 param 是 db 中字段的值,而 dbField 是 java.reflect.util.Field ,将值放在哪里
【讨论】:
JDBC 不支持枚举。
您可以将字符串转换为枚举,因此如果您有 Java 枚举,则可以执行类似的操作
MyEnum enumVal = MyEnum.valueOf(rs.getString("EnumColumn"));
不过,您必须使您的 java 枚举和 mysql 枚举保持同步。如果字符串没有映射,MyEnum.valueOf() 可以抛出 IllegalArgumentException,如果从 db 中获得 null 值,则抛出 NullPointerException。
【讨论】: