最新国产好看的视频,伊人天堂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ù)庫,不需要再手動(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ù)庫中直接存入枚舉屬性val的值
  private Integer val;
  @JsonValue //序列化枚舉對象時(shí),返回其屬性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.前端向后臺(tái)傳輸json參數(shù),json反序列化成對象時(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;
  }
}

請求類

@RequestMapping("/getUser")
  @ResponseBody
  public User getUser(User u) {
      //返回?cái)?shù)據(jù)給前臺(tái)時(shí),序列化對象時(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)換為枚舉對象 
     // json反序列化時(shí)自動(dòng)調(diào)用了SexEnum中的fromDesc()獲取枚舉對象,然后賦值給u中的sex
     userService.saveUser(u);
     return "success";
  }

效果圖

postman中的入?yún)?一定要使用json格式,使用表單無效果

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

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

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

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

以上就是springMvc和mybatis-plus中枚舉值和字段的映射的詳細(xì)內(nèi)容,更多關(guān)于springMvc mybatis-plus的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評論

新营市| 克山县| 齐齐哈尔市| 莱州市| 邵阳市| 攀枝花市| 武山县| 原平市| 台湾省| 兴宁市| 渑池县| 高唐县| 河源市| 镇远县| 湾仔区| 隆回县| 调兵山市| 麦盖提县| 普兰店市| 饶河县| 重庆市| 上蔡县| 溆浦县| 武冈市| 靖边县| 阳春市| 达州市| 潍坊市| 贵州省| 拉萨市| 民和| 新龙县| 兰溪市| 香格里拉县| 南平市| 麻栗坡县| 柳河县| 南部县| 河北省| 南澳县| 拜城县|