JDBC:Java中枚舉類型和PostgreSQL數據庫中枚舉類型的映射


以下內容轉自:

https://blog.csdn.net/theonegis/article/details/41749773

 

PostgreSQL數據庫允許你使用如下的語法創建枚舉類型:

 

CREATE TYPE animal_type AS ENUM('DOG', 'CAT', 'SQUIRREL');


創建以后就可以使用animal_type作為數據表中的數據類型,例如:

 

 

  1.  
    create table pet (
  2.  
    pet_id integer not null,
  3.  
    pet_type animal_type not null,
  4.  
    name varchar(20) not null
  5.  
    );


在Java中你也要創建相應的枚舉類型:

 

 

  1.  
    public enum AnimalType {
  2.  
    DOG,
  3.  
    CAT,
  4.  
    SQUIRREL;
  5.  
    }


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端代碼都是一一樣的,你像下面一樣可以設置字段的值:

 

  1.  
    stmt.setInt(1, 1);
  2.  
    stmt.setString(2, AnimalType.DOG.toString());
  3.  
    stmt.setString(3, 'Rex');


從數據庫中提取枚舉枚舉類型的值也很簡單:

 

 

AnimalType.valueOf(stmt.getString("pet_type"));


考慮到枚舉類型時大小寫敏感的,所以你在PostgreSQL數據庫和Java嗲面中應該考慮到,做到大小寫統一。而且PostgreSQL中的enum枚舉類型不是標准的SQL類型所以不具有可移植性。

 

在PostgreSQL中參考枚舉類型的值,可以使用如下的查詢語句:

 

  1.  
    SELECT enumlabel FROM pg_enum
  2.  
    WHERE enumtypid = 'your_enum'::regtype ORDER BY oid;



 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM