當前位置:首頁 » 服務存儲 » Java枚舉值如何存儲到資料庫
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

Java枚舉值如何存儲到資料庫

發布時間: 2022-08-24 06:29:45

資料庫的枚舉型問題

1、這個類型可以多種:int, char(n) -- 只要約定好就行,存貯枚舉值的代碼
2、枚舉類型的允許值,可以由DB保證(比如在tradeInfo.tradeType上加約束);也可以只是由程序來控制 -- DB中加上約束會強壯一些,但會犧牲性能;
3、為了軟體界面的易讀性,通常需要讓枚舉值可讀。每個枚舉值對應的文本最好存貯在DB中。這個稱為MasterData。可以建一張表存貯
4、如果有對應的主數據表,前面2中的約束,就可以改為Foreign Key

至於JAVA編程,枚舉類型的處理,可以使用常量,也可以更優雅地定義一個類。

⑵ java枚舉

這個枚舉裡面寫了如下方法public
abstract
TrafficLamp
nextLamp();
以上為一個抽象方法,需要實現的,所以下面的RED有方法體(匿名類的概念),是為了實現抽象方法。
RED(30){
public
TrafficLamp
nextLamp(){
return
GREEN;
}
而30是傳入int參數,因為下面寫了有參的構造方法:
private
int
time;
private
TrafficLamp(int
time){this.time
=
time;
time=30這是RED的一個屬性。
你可以把枚舉看做一個類,而它的每個實例都是該類的對象,而且此對象是不可變的。

⑶ java springmvc 頁面枚舉類型作為怎樣查詢條件並傳遞參數到controller

一,從controller往視圖傳遞值,controller---->視圖

1)簡單類型,如int,String,直接寫在controller方法的參數里,是無法傳遞到視圖頁面上的(經測試)。

(而用@RequestParam("name")註解,可以從視圖上,或地址中加?name=***傳遞到controller方法里)

2)可以用Map<String,Object>,其鍵值可以在頁面上用EL表達式${鍵值名}得到,

3)也可以用Model類對象來傳遞,有addAttribute(key,value)方法,其鍵值可以在頁面上用EL表達式${鍵值名}得到,

如果用addAttribute(value)這個方法,會將類型名的首字母改成小寫後,作為鍵值名傳遞過去,例如"ok"在頁面上用${string}得到,而一個復合類對象,如User類對象,頁面上用${user}得到該對象,用${user.propertyName}得到其屬性,這是用Model的一大優勢。
例如,model.addAttribute(newUser("my姓名","我的愛好有游泳打球"));
這樣頁面上就能用${user.name}和${user.hobby}列印對應屬性

@RequestMapping(value={"/","/hello"})
publicStringhello(intid,Map<String,Object>map){
System.out.println(id);
System.out.println("hello");
map.put("hello","world");
return"hello";
}

@RequestMapping(value="/say")
publicStringsay(@RequestParamintid,Modelmodel){
System.out.println("say");
model.addAttribute("hello","value");
//使用Object的類型作為key,String-->string
model.addAttribute("ok");
return"hello";
}www.2cto.com

⑷ java後端的某個類跟資料庫交互的時候某個欄位是整型的,而跟前端交互的是字元串類型的

如果使用的是mybatis的話,可以通過枚舉類型進行轉換的。

public class EnumTypeHandler<E extends Enum<E>> extends BaseTypeHandler<E> {....}

使用EnumTypeHandler自動給你轉,然後代碼當中 前端可以直接拿到enum的值(字元串),資料庫儲存的是數字~

給你參考一下,希望對你有幫助~

⑸ JAVA枚舉可以用來做什麼舉一個簡單的例子(用枚舉、不用)

Enum作為Sun全新引進的一個關鍵字,看起來很象是特殊的class, 它也可以有自己的變數,可以定義自己的方法,可以實現一個或者多個介面。當我們在聲明一個enum類型時,我們應該注意到enum類型有如下的一些特徵。

1.它不能有public的構造函數,這樣做可以保證客戶代碼沒有辦法新建一個enum的實例。

2.所有枚舉值都是public , static , final的。注意這一點只是針對於枚舉值,我們可以和在普通類裡面定義變數一樣定義其它任何類型的非枚舉變數,這些變數可以用任何你想用的修飾符。
3.Enum默認實現了java.lang.Comparable介面。

4.Enum覆載了了toString方法,因此我們如果調用Color.Blue.toString()默認返回字元串」Blue」.

5.Enum提供了一個valueOf方法,這個方法和toString方法是相對應的。調用valueOf(「Blue」)將返回Color.Blue.因此我們在自己重寫toString方法的時候就要注意到這一點,一把來說應該相對應地重寫valueOf方法。
6.Enum還提供了values方法,這個方法使你能夠方便的遍歷所有的枚舉值。

7.Enum還有一個oridinal的方法,這個方法返回枚舉值在枚舉類種的順序,這個順序根據枚舉值聲明的順序而定,這里Color.Red.ordinal()返回0。

1.遍歷所有有枚舉值. 知道了有values方法,我們可以輕車熟路地用ForEach循環來遍歷了枚舉值了。
for (Color c: Color.values())
System.out.println(「find value:」 + c);

2.在enum中定義方法和變數,比如我們可以為Color增加一個方法隨機返回一個顏色。
public enum Color {
Red,
Green,
Blue;

private static int number = Color.values().length ;

public static Color getRandomColor(){
long random = System.currentTimeMillis() % number;
switch ((int) random){
case 0:
return Color.Red;
case 1:
return Color.Green;
case 2:
return Color.Blue;
default : return Color.Red;
}
}
}

可以看出這在枚舉類型里定義變數和方法和在普通類裡面定義方法和變數沒有什麼區別。唯一要注意的只是變數和方法定義必須放在所有枚舉值定義的後面,否則編譯器會給出一個錯誤。

3.覆載(Override)toString, valueOf方法。
前面我們已經知道enum提供了toString,valueOf等方法,很多時候我們都需要覆載默認的toString方法,那麼對於enum我們怎麼做呢。其實這和覆載一個普通class的toString方法沒有什麼區別。
….
public String toString(){
switch (this){
case Red:
return "Color.Red";
case Green:
return "Color.Green";
case Blue:
return "Color.Blue";
default:
return "Unknow Color";

}
}
….

這時我們可以看到,此時再用前面的遍歷代碼列印出來的是
Color.Red
Color.Green
Color.Blue
而不是
Red
Green
Blue.
可以看到toString確實是被覆載了。一般來說在覆載toString的時候我們同時也應該覆載valueOf方法,以保持它們相互的一致性。

4.使用構造函數。
雖然enum不可以有public的構造函數,但是我們還是可以定義private的構造函數,在enum內部使用。還是用Color這個例子。

public enum Color {
Red("This is Red"),
Green("This is Green"),
Blue("This is Blue");

private String desc;

Color(String desc){
this.desc = desc;
}

public String getDesc(){
return this.desc;
}

}

這里我們為每一個顏色提供了一個說明信息
public enum Color {
Red {
public String toString(){
return "Color.Red";
}
},
Green {
public String toString(){
return "Color.Green";
}
},
Blue{
public String toString(){
return "Color.Blue";
}

};
}

, 然後定義了一個構造函數接受這個說明信息。
要注意這里構造函數不能為public或者protected, 從而保證構造函數只能在內部使用,客戶代碼不能new一個枚舉值的實例出來。這也是完全符合情理的,因為我們知道枚舉值是public static final的常量而已。

5.實現特定的介面
我們已經知道enum可以定義變數和方法,它要實現一個介面也和普通class實現一個介面一樣,這里就不作示例了。

6.定義枚舉值自己的方法。
前面我們看到可以為enum定義一些方法,其實我們甚至可以為每一個枚舉值定義方法。這樣,我們前面覆載 toString的例子可以被改寫成這樣。
從邏輯上來說這樣比原先提供一個「全局「的toString方法要清晰一些。

總的來說,enum作為一個全新定義的類型,是希望能夠幫助程序員寫出的代碼更加簡單易懂,個人覺得一般也不需要過多的使用enum的一些高級特性,否則就和簡單易懂的初衷想違背了。

⑹ Java中枚舉如何使用

怎麼解釋枚舉呢。枚舉的定義就是一個有限值的集合。一個枚舉類型的變數它的值只可能是類型值中的一個。
所以Drection 是類型名,Drection drection 則是此類型的變數,變數的值應該是類型里邊所列的值中的一個,如果單寫個WEST跟本不知道它是什麼,所以要加類名限定即Drection.WEST. 於是,對一個枚舉變數賦值的樣子就像這樣。
if(drection==Drection.WEST) return true; String west="WEST"; drection.toString().equals(west) return true;

⑺ 在資料庫中存枚舉值,用數字還是字元好

這個要看你的 枚舉, 是 僅僅一次只能選擇一個的? 還是一次可以選擇多個的.

例如你的
order_id order_status
1 SUCS(成功success)
2 PCES(處理process)

某行數據, 要麼就是 SUCS(成功success) , 要麼就是 PCES(處理process)
這種情況下, 用字元是比較合適的。

但是如果枚舉是可以選擇多個的, 例如:
id desc
1 無黨派
2 知識分子
4 少數民族
8 女性
16 ......

這種情況下, 如果一個人, 多個枚舉都滿足的情況下, 那麼這種情況下, 使用 數字 是比較適合的。
也就是
如果某個人,是 無黨派漢族女性研究生, 那麼枚舉值 = 1+2+8

⑻ java 請教一個資料庫欄位設計問題 標示符 枚舉

訂單狀態定義為枚舉。
實體類使用jap註解。在實體類中,訂單狀態這個欄位的get方法上面加上這樣一個註解:@Enumerated(EnumType.STRING)

這樣,在資料庫中存的這個枚舉類型的記錄就變成了枚舉的String類型,從資料庫中獲取出來會被轉換為相應的枚舉類型

⑼ java的enum保存到oracle中是什麼類型

oracle 是不支持枚舉類型的
解決辦法:
可以自定義一個轉換類;轉換為可存儲的類型,→保存到Oracle 中
讀取出來之後,在轉換為枚舉類型;