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

 更新时间:2023年05月28日 12:02:05   作者:forest  
这篇文章主要为大家介绍了springMvc和mybatis-plus中枚举值和字段的映射示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

DB和entity之间的映射

最近看到有人使用这几个注解,就稍微了解了一下各自的用法,发现枚举在前后台传值,DB和entity之间的映射很方便

  • 1.使用@JsonCreator,可以将前台的属性值直接转换为枚举类型
  • 2.@EnumValue 将枚举中的指定的值直接存储到数据库,不需要再手动转换
  • 3.@JsonValue 后台返回前台数据时也不需要转换,可以直接返回指定的值

案例:

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 //数据库中直接存入枚举属性val的值
  private Integer val;
  @JsonValue //序列化枚举对象时,返回其属性desc的值
  private String desc;
  SexEnum(Integer val, String desc) {
      this.val = val;
      this.desc = desc;
  }
  /**
   * 1.通过属性desc获取对应的枚举
   * 2.JsonCreator加在构造方法或者静态方法上,为对象的反序列化指定构造逻辑
   * 3.前端向后台传输json参数,json反序列化成对象时会自动调用这个方法
   */
  @JsonCreator
  public static SexEnum fromDesc(String desc) {
      System.out.println("进入枚举自定义构造方法");
      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) {
      //返回数据给前台时,序列化对象时,其中的枚举类型会根据@JsonValue指定的字段进行处理
      User user = userService.getUser();
      return user;
  }
  @RequestMapping("/save_user")
  @ResponseBody
  public String saveUser(@RequestBody User u) {
     //前台传入Sex字符串,直接转换为枚举对象 
     // json反序列化时自动调用了SexEnum中的fromDesc()获取枚举对象,然后赋值给u中的sex
     userService.saveUser(u);
     return "success";
  }

效果图

postman中的入参,一定要使用json格式,使用表单无效果

看到控制台打印了一句话,说明反序列化枚举对象时,使用了我们自定义的方法

可以看到sex属性中的值前端传入的值‘男’,但是后台接收到为SexEnum的"MALE"

数据库中的数据,按照@EnumValue指定的属性存入数据

从数据库中查询的数据,枚举按照我们使用@jsonValue的字段返回值

以上就是springMvc和mybatis-plus中枚举值和字段的映射的详细内容,更多关于springMvc mybatis-plus的资料请关注脚本之家其它相关文章!

相关文章

  • Java使用ES Client 调用滚动查询及Elasticsearch滚动查询Scrolling机制

    Java使用ES Client 调用滚动查询及Elasticsearch滚动查询Scrolling机制

    Elasticsearch提供了一种称为"滚动查询"(Scrolling)的机制,用于处理大型数据集的分页查询,这篇文章给大家介绍滚动查询的一般步骤及Java使用ESClient调用滚动查询的方法,感兴趣的朋友一起看看吧
    2023-08-08
  • Mybatis中多个对象包含同一个对象的处理操作

    Mybatis中多个对象包含同一个对象的处理操作

    这篇文章主要介绍了Mybatis中多个对象包含同一个对象的处理操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06
  • struts2拦截器_动力节点Java学院整理

    struts2拦截器_动力节点Java学院整理

    如何使用struts2拦截器,或者自定义拦截器。下面通过实例代码给大家分享struts2拦截器的相关知识,感兴趣的朋友参考下吧
    2017-09-09
  • springboot中@Value的工作原理说明

    springboot中@Value的工作原理说明

    这篇文章主要介绍了springboot中@Value的工作原理,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07
  • 教你怎么在win10环境下安装jdk8

    教你怎么在win10环境下安装jdk8

    今天教大家怎么在win10环境下安装jdk8,文中有非常详细的图文示例,对想要安装win10的小伙伴们很有帮助,需要的朋友可以参考下
    2021-05-05
  • SpringBoot配置mybatis驼峰命名规则自动转换的实现

    SpringBoot配置mybatis驼峰命名规则自动转换的实现

    这篇文章主要介绍了SpringBoot配置mybatis驼峰命名规则自动转换的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • SpringCloud微服务基础简介

    SpringCloud微服务基础简介

    今天带大家学习一下SpringCloud微服务的相关知识,文中有非常详细的图文示例及介绍,对正在学习SpringCloud微服务的小伙伴们很有帮助哦,需要的朋友可以参考下
    2021-05-05
  • 使用shardingsphere对SQLServer坑的解决

    使用shardingsphere对SQLServer坑的解决

    本文主要介绍了使用shardingsphere对SQLServer坑的解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-03-03
  • Java实现WGS84/GCJ02/BD09的坐标互转终极方案

    Java实现WGS84/GCJ02/BD09的坐标互转终极方案

    这篇文章主要为大家详细介绍了Java如何利用Geotools实现WGS84/GCJ02/BD09的坐标互转,文中的示例代码讲解详细,需要的小伙伴可以了解下
    2025-09-09
  • Java实现角色扮演游戏的示例代码

    Java实现角色扮演游戏的示例代码

    这篇文章主要介绍了通过Java语言实现的自制的角色扮演游戏,选择两个角色,然后进行PK,可用来学习JAVA的接口,继承和多态。需要的可以参考一下
    2022-02-02

最新评论