最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

springMvc和mybatis-plus中枚舉值和字段的映射

 更新時(shí)間:2023年05月28日 12:02:05   作者:forest  
這篇文章主要為大家介紹了springMvc和mybatis-plus中枚舉值和字段的映射示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

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)文章

最新評(píng)論

澜沧| 宜章县| 兰考县| 东阳市| 九寨沟县| 泸西县| 南充市| 庆元县| 延庆县| 金川县| 霍州市| 青河县| 南陵县| 芜湖市| 胶州市| 沭阳县| 二连浩特市| 泉州市| 牡丹江市| 嵩明县| 昌邑市| 公安县| 通海县| 绥德县| 巴林左旗| 怀远县| 绥芬河市| 徐闻县| 隆安县| 佛坪县| 曲阜市| 荆门市| 罗田县| 新疆| 中牟县| 宁陵县| 邓州市| 小金县| 塔河县| 威远县| 宝丰县|