Java枚举到预编译语句中的mysql枚举

时间:2009-10-28 18:40:36

标签: java mysql

使用常规语句(只是语句)我可以将java枚举放入查询中,它可以正常工作。准备好的陈述我不能这样做吗?

2 个答案:

答案 0 :(得分:11)

MySQL将其枚举类型视为查询字符串。因此,您应该能够使用PreparedStatement.setString()方法并将枚举名称传递给它:

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

当然,这假设您的java和MySQL枚举的名称匹配。

注意:根据文档选择 name()而不是toString()

  

name() 此方法主要用于特殊情况,其中正确性取决于获取确切名称,不会因版本而异。

答案 1 :(得分:1)

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

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

这提供了简单性,但是,您必须确保不要更改代码中枚举元素的顺序,因为这会破坏它们与数据库中存储的内容的关系。