枚举是否受 JDBC 支持?
我真的找不到一个很好的枚举JDBC映射示例。枚举是否真正受 JDBC 支持?
我正在使用MySQL。我有一个枚举列,并希望映射到一些Java枚举。
我真的找不到一个很好的枚举JDBC映射示例。枚举是否真正受 JDBC 支持?
我正在使用MySQL。我有一个枚举列,并希望映射到一些Java枚举。
JDBC 不支持枚举。
您可以将字符串转换为枚举,因此,如果您有Java枚举,则可以执行如下操作:
MyEnum enumVal = MyEnum.valueOf(rs.getString("EnumColumn"));
但是,您必须保持java枚举和mysql枚举同步。MyEnum.valueOf() 如果字符串中没有映射,则可以抛出 IllegalArgumentException,如果从 db 中获取空值,则可以抛出 NullPointerException。
以下是一些在将JDBC值转换为Java枚举时使用的通用解决方案。
param = Enum.valueOf((Class<? extends Enum>)dbField.getField().getType(), (String) param);
其中 param 是 db 中字段的值,dbField 是 java.reflect.util.Field ,将值放到哪里