枚举是否受 JDBC 支持?

2022-09-01 11:59:07

我真的找不到一个很好的枚举JDBC映射示例。枚举是否真正受 JDBC 支持?

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


答案 1

JDBC 不支持枚举。

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

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

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


答案 2

以下是一些在将JDBC值转换为Java枚举时使用的通用解决方案。

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

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