PostgreSQL数据库允许你使用如下的语法创建枚举类型:
CREATE TYPE animal_type AS ENUM('DOG', 'CAT', 'SQUIRREL');
创建以后就可以使用animal_type作为数据表中的数据类型,例如:
create table pet (
pet_id integer not null,
pet_type animal_type not null,
name varchar(20) not null
);
在Java中你也要创建相应的枚举类型:
public enum AnimalType {
DOG,
CAT,
SQUIRREL;
}
Java中枚举类型和PostgreSQL中枚举类型的转换是很直接的。例如,要进行数据的插入或者更新,可以使用CAST语法在SQL 的PreparedStatement语句中这样写:
INSERT INTO pet (pet_id, pet_type, name) VALUES (?, CAST(? AS animal_type), ?);
或者
INSERT INTO pet (pet_id, pet_type, name) VALUES (?, ?::animal_type, ?);
注:这两种SQL语句作用是一样的。
PostgreSQL还可以允许你传递一个String类型的字符来进行对数据库中枚举类型数据的插入或者更新。
在Java端代码都是一一样的,你像下面一样可以设置字段的值:
stmt.setInt(1, 1);
stmt.setString(2, AnimalType.DOG.toString());
stmt.setString(3, 'Rex');
从数据库中提取枚举枚举类型的值也很简单:
AnimalType.valueOf(stmt.getString("pet_type"));
考虑到枚举类型时大小写敏感的,所以你在PostgreSQL数据库和Java嗲面中应该考虑到,做到大小写统一。而且PostgreSQL中的enum枚举类型不是标准的SQL类型所以不具有可移植性。
在PostgreSQL中参考枚举类型的值,可以使用如下的查询语句:
SELECT enumlabel FROM pg_enum
WHERE enumtypid = 'your_enum'::regtype ORDER BY oid;
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有