使用常规语句(只是语句)我可以将java枚举放入查询中,它可以正常工作。准备好的陈述我不能这样做吗?
答案 0 :(得分:11)
MySQL将其枚举类型视为查询字符串。因此,您应该能够使用PreparedStatement.setString()
方法并将枚举名称传递给它:
preparedStatement.setString(1, MY_ENUM.name());
当然,这假设您的java和MySQL枚举的名称匹配。
注意:根据文档选择 name()
而不是toString()
:
name() 此方法主要用于特殊情况,其中正确性取决于获取确切名称,不会因版本而异。
答案 1 :(得分:1)
如果您希望将其存储为整数(这是更多空间和性能友好),您可以这样做:
preparedStatement.setInt(1,myEnum.ordinal());
这提供了简单性,但是,您必须确保不要更改代码中枚举元素的顺序,因为这会破坏它们与数据库中存储的内容的关系。