2009-10-28 199 views

回答

9

MySQL将其枚举类型视为查询的字符串。所以,你应该能够使用PreparedStatement.setString()方法,并传递枚举名字了:

preparedStatement.setString(1, MY_ENUM.name()); 

这是假设,当然,前提是你的Java和MySQL的名字枚举比赛。

说明:name()被选择的代替toString()如,每文档:

名称()此方法主要用于在特殊情形,其正确性取决于获取的确切名称设计,从发布到发布不会有所不同。

1

如果您希望将其存储为整数(这是更多的空间和性能友好的),你可以这样做:

preparedStatement.setInt(1,myEnum.ordinal());

这提供了简单性,但是,您必须确保不要更改代码中enum元素的顺序,因为这会破坏与db中存储的关系的关系。