java 枚举(enum),枚举在存入数据库的时候是什么类型

先说结论:以我们定义枚举的数据类型保存了

  1. Java 枚举是一个特殊的类,一般表示一组常量.例如一周的七天,一年的12个月.
    大多数用户一个字段的好多种类型,比如用户的在线,下线,匹配中,游戏中 等等的状态.

  2. 枚举的一些操作

enum color {
        红色, 绿色, 灰色
}
static class user {
        String name;
        color hairColor;
}
public static void main(String[] args) {
        color[] values = color.values();
        for (int i = 0; i < values.length; i++) {
            System.out.println(values[i]);
        }
        color a = color.灰色;
        System.out.println(color.灰色);

        user user = new user();
        user.setHairColor(color.灰色);
        user.setName("小樱");
        System.out.println(user.toString());
    }
以上代码输出:

红色 绿色 灰色 灰色 user{name='小樱', hairColor=灰色}

  1. 关于枚举的一些问题
    包含枚举的对象存入数据库的时候是以什么类型存储的?
    在数据库创建用户表,hairColor 字段类型为 int 类型:

    插入时数据库报错:
SQL: insert into user (name,hairColor)values (?,?)
    Cause: java.sql.SQLException: Incorrect integer value: '灰色' for column 'hairColor' at row 1

将字段改为字符串类型:

后添加成功:

结论:虽然传入数据库的时候是枚举,但是还是以我们定义枚举的数据类型保存了

原文地址:https://www.cnblogs.com/q-441465293/p/15002030.html