springMvc和mybatis-plus中枚舉值和字段的映射
DB和entity之間的映射
最近看到有人使用這幾個(gè)注解,就稍微了解了一下各自的用法,發(fā)現(xiàn)枚舉在前后臺(tái)傳值,DB和entity之間的映射很方便
- 1.使用@JsonCreator,可以將前臺(tái)的屬性值直接轉(zhuǎn)換為枚舉類型
- 2.@EnumValue 將枚舉中的指定的值直接存儲(chǔ)到數(shù)據(jù)庫(kù),不需要再手動(dòng)轉(zhuǎn)換
- 3.@JsonValue 后臺(tái)返回前臺(tái)數(shù)據(jù)時(shí)也不需要轉(zhuǎn)換,可以直接返回指定的值
案例:
User實(shí)體
@TableName("user")
@Data
public class User {
private Integer id;
private String name;
private Integer age;
private SexEnum sex;
}枚舉類
public enum SexEnum {
MALE(1,"男"),
FEMALE(2,"女")
;
@EnumValue //數(shù)據(jù)庫(kù)中直接存入枚舉屬性val的值
private Integer val;
@JsonValue //序列化枚舉對(duì)象時(shí),返回其屬性desc的值
private String desc;
SexEnum(Integer val, String desc) {
this.val = val;
this.desc = desc;
}
/**
* 1.通過(guò)屬性desc獲取對(duì)應(yīng)的枚舉
* 2.JsonCreator加在構(gòu)造方法或者靜態(tài)方法上,為對(duì)象的反序列化指定構(gòu)造邏輯
* 3.前端向后臺(tái)傳輸json參數(shù),json反序列化成對(duì)象時(shí)會(huì)自動(dòng)調(diào)用這個(gè)方法
*/
@JsonCreator
public static SexEnum fromDesc(String desc) {
System.out.println("進(jìn)入枚舉自定義構(gòu)造方法");
for(SexEnum sexEnum : SexEnum.values()) {
if(sexEnum.getDesc().equals(desc)) {
return sexEnum;
}
}
return null;
}
public Integer getVal() {
return val;
}
public void setVal(Integer val) {
this.val = val;
}
public String getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
}請(qǐng)求類
@RequestMapping("/getUser")
@ResponseBody
public User getUser(User u) {
//返回?cái)?shù)據(jù)給前臺(tái)時(shí),序列化對(duì)象時(shí),其中的枚舉類型會(huì)根據(jù)@JsonValue指定的字段進(jìn)行處理
User user = userService.getUser();
return user;
}
@RequestMapping("/save_user")
@ResponseBody
public String saveUser(@RequestBody User u) {
//前臺(tái)傳入Sex字符串,直接轉(zhuǎn)換為枚舉對(duì)象
// json反序列化時(shí)自動(dòng)調(diào)用了SexEnum中的fromDesc()獲取枚舉對(duì)象,然后賦值給u中的sex
userService.saveUser(u);
return "success";
}效果圖
postman中的入?yún)?一定要使用json格式,使用表單無(wú)效果

看到控制臺(tái)打印了一句話,說(shuō)明反序列化枚舉對(duì)象時(shí),使用了我們自定義的方法

可以看到sex屬性中的值前端傳入的值‘男’,但是后臺(tái)接收到為SexEnum的"MALE"

數(shù)據(jù)庫(kù)中的數(shù)據(jù),按照@EnumValue指定的屬性存入數(shù)據(jù)

從數(shù)據(jù)庫(kù)中查詢的數(shù)據(jù),枚舉按照我們使用@jsonValue的字段返回值

以上就是springMvc和mybatis-plus中枚舉值和字段的映射的詳細(xì)內(nèi)容,更多關(guān)于springMvc mybatis-plus的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
java.util.Date與java.sql.Date的區(qū)別
這篇文章主要介紹了java.util.Date與java.sql.Date的區(qū)別的相關(guān)資料,需要的朋友可以參考下2015-07-07
java數(shù)據(jù)結(jié)構(gòu)圖論霍夫曼樹(shù)及其編碼示例詳解
這篇文章主要為大家介紹了java數(shù)據(jù)結(jié)構(gòu)圖論霍夫曼樹(shù)及其編碼示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪2021-11-11
screw?Maven插件方式運(yùn)行時(shí)在編譯打包時(shí)跳過(guò)執(zhí)行的問(wèn)題解決方法
這篇文章主要介紹了screw?Maven插件方式運(yùn)行時(shí)在編譯打包時(shí)跳過(guò)執(zhí)行的問(wèn)題解決方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-03-03
springSecurity之如何添加自定義過(guò)濾器
這篇文章主要介紹了springSecurity之如何添加自定義過(guò)濾器的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-08-08
Springboot整合Swagger3全注解配置(springdoc-openapi-ui)
本文主要介紹了Springboot整合Swagger3全注解配置(springdoc-openapi-ui),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03

