springMvc和mybatis-plus中枚舉值和字段的映射
DB和entity之間的映射
最近看到有人使用這幾個注解,就稍微了解了一下各自的用法,發(fā)現(xiàn)枚舉在前后臺傳值,DB和entity之間的映射很方便
- 1.使用@JsonCreator,可以將前臺的屬性值直接轉(zhuǎn)換為枚舉類型
- 2.@EnumValue 將枚舉中的指定的值直接存儲到數(shù)據(jù)庫,不需要再手動轉(zhuǎn)換
- 3.@JsonValue 后臺返回前臺數(shù)據(jù)時也不需要轉(zhuǎn)換,可以直接返回指定的值
案例:
User實體
@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ù)庫中直接存入枚舉屬性val的值 private Integer val; @JsonValue //序列化枚舉對象時,返回其屬性desc的值 private String desc; SexEnum(Integer val, String desc) { this.val = val; this.desc = desc; } /** * 1.通過屬性desc獲取對應(yīng)的枚舉 * 2.JsonCreator加在構(gòu)造方法或者靜態(tài)方法上,為對象的反序列化指定構(gòu)造邏輯 * 3.前端向后臺傳輸json參數(shù),json反序列化成對象時會自動調(diào)用這個方法 */ @JsonCreator public static SexEnum fromDesc(String desc) { System.out.println("進入枚舉自定義構(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; } }
請求類
@RequestMapping("/getUser") @ResponseBody public User getUser(User u) { //返回數(shù)據(jù)給前臺時,序列化對象時,其中的枚舉類型會根據(jù)@JsonValue指定的字段進行處理 User user = userService.getUser(); return user; } @RequestMapping("/save_user") @ResponseBody public String saveUser(@RequestBody User u) { //前臺傳入Sex字符串,直接轉(zhuǎn)換為枚舉對象 // json反序列化時自動調(diào)用了SexEnum中的fromDesc()獲取枚舉對象,然后賦值給u中的sex userService.saveUser(u); return "success"; }
效果圖
postman中的入?yún)?一定要使用json格式,使用表單無效果
看到控制臺打印了一句話,說明反序列化枚舉對象時,使用了我們自定義的方法
可以看到sex屬性中的值前端傳入的值‘男’,但是后臺接收到為SexEnum的"MALE"
數(shù)據(jù)庫中的數(shù)據(jù),按照@EnumValue指定的屬性存入數(shù)據(jù)
從數(shù)據(jù)庫中查詢的數(shù)據(jù),枚舉按照我們使用@jsonValue的字段返回值
以上就是springMvc和mybatis-plus中枚舉值和字段的映射的詳細內(nèi)容,更多關(guān)于springMvc mybatis-plus的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
java.util.Date與java.sql.Date的區(qū)別
這篇文章主要介紹了java.util.Date與java.sql.Date的區(qū)別的相關(guān)資料,需要的朋友可以參考下2015-07-07java數(shù)據(jù)結(jié)構(gòu)圖論霍夫曼樹及其編碼示例詳解
這篇文章主要為大家介紹了java數(shù)據(jù)結(jié)構(gòu)圖論霍夫曼樹及其編碼示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步早日升職加薪2021-11-11screw?Maven插件方式運行時在編譯打包時跳過執(zhí)行的問題解決方法
這篇文章主要介紹了screw?Maven插件方式運行時在編譯打包時跳過執(zhí)行的問題解決方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-03-03Springboot整合Swagger3全注解配置(springdoc-openapi-ui)
本文主要介紹了Springboot整合Swagger3全注解配置(springdoc-openapi-ui),文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-03-03