【问题标题】:How to work with ENUM types in sql with java如何使用 java 在 sql 中使用 ENUM 类型
【发布时间】:2013-11-02 11:49:52
【问题描述】:

您好,我在数据库中有一个 STATUS 字段作为枚举类型。

但是我如何为此创建设置器?作为字符串、INT 或“Java 枚举”

类似的东西

public enum getStatus() {
    return Status;
}

public void setStatus(enum Status) {
    this.Status = Status;
}

【问题讨论】:

  • 您是如何访问数据库的?你在使用 JPA 吗?您的数据库是否像 PostgreSQL 一样支持枚举类型的列?
  • 什么的二传手?如果它是数据库中的枚举,那么在您的 Java 代码中也有一个枚举可能是个好主意。
  • 看到我在上面添加了代码示例。这是一个好方法吗?
  • 尊重 Java 命名约定。变量以小写字母开头。并阅读有关枚举的教程,因为您不知道它们是如何工作的。您可以通过谷歌搜索“Java 教程枚举”并单击第一个链接来找到它。 docs.oracle.com/javase/tutorial/java/javaOO/enum.html

标签: java mysql enums


【解决方案1】:

您需要使用枚举的名称作为status 的类型。有的这样

enum MyEnum { // Assuming MyEnum is the name of the enum
    // enum values sample below
    ACTIVE, INACTIVE, PENDING
}

编辑:经过我们的讨论,这可能更适合你。

private MyEnum status;

public String getStatus() {
    return this.status.name();
}

public void setStatus(String status) {
    this.status = MyEnum.valueOf(status);
}

【讨论】:

  • 你能用包含的枚举值修改你的答案吗?
  • 我怎么知道你正在使用的枚举值?!你会比任何人都清楚。
  • 我的意思是如何声明不同的状态?
  • 好的。在这种情况下,请立即检查编辑后的答案。我添加了一些示例值。
  • 我像这样更改了我的代码,但是在 this.status 之后的 getter 和 setter 中,它说我缺少一个表达式?
【解决方案2】:

我会看看这是否适合你:

public enum MyStatus { ACTIVE, INACTIVE, PENDING }

public class OtherClass
{
  private MyStatus status = null;

  /* other code */

  /* when it is time to get a value of status to store in the database: */
  String statusString = status.name();

  /* when it is time to take a string from the database 
   * and translate to the variable */
  status = MyStatus.value(stringFromDatabase);

}

你必须记住你不能在程序的更高版本中从枚举中删除值,或者你必须记住从数据库中删除所有这些值,或者你必须从 valueOf() 中捕获生成的异常并用它做一些聪明的事情。

【讨论】:

  • 我将从数据库中检索到的值添加到 JComboBox 中
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-09-15
  • 1970-01-01
  • 2022-01-14
  • 1970-01-01
  • 1970-01-01
  • 2011-06-17
  • 2013-09-09
相关资源
最近更新 更多