SpringBoot枚举入参实例

什么是枚举?

  • 枚举是一个特殊的类,它表示一组有限的值。在Java中,枚举类型是用于定义命名常量的一种方式。枚举常量是静态的、最终的和公共的,它们可以在整个应用程序中使用,而且具有自己的名称和值。
  • 它是将常量分组为一组的一种方法。枚举可以作为常量池使用,这样可以提高代码的可读性和可维护性。枚举在Java中非常有用,因为它们可以减少代码中的硬编码,并使代码更加自然和易于理解。
     

枚举类

package cn.itcast.user.enums;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Getter;

/**
     * @author 性别
     */

    @Getter
    @JsonFormat(shape = JsonFormat.Shape.OBJECT)
    public enum Gender {
        /**
         * 男士
         */
        MALE(1, "男士"),

        /**
         * 女士
         */
        FEMALE(2, "女士");

        /**
         * 编码
         */

        private final Integer code;
        /**
         * 注释
         */
        //@JsonValue
        private final String desc;

        Gender(Integer code, String desc) {
            this.code = code;
            this.desc = desc;
        }

        public static Gender fromString(String value) {
            if (value == null) {
                return null;
            }
            for (Gender gender : Gender.values()) {
                if (gender.name().equalsIgnoreCase(value)) {
                    return gender;
                }
            }
            return null;
        }

        public static Gender fromCode(Integer code) {
            if (code == null) {
                return null;
            }
            for (Gender gender : Gender.values()) {
                if (gender.getCode().equals(code)) {
                    return gender;
                }
            }
            throw new IllegalArgumentException("Invalid code: " + code);
        }
    }

entity

package cn.itcast.user.pojo;

import cn.itcast.user.enums.Gender;
import lombok.Data;
import org.springframework.web.bind.annotation.ModelAttribute;

@Data
public class Person {
    private Long id;
    private String name;
    private Gender gender;

    @ModelAttribute("gender")
    public void setGender(Gender gender) {
        this.gender = gender;
    }
}

controller

package cn.itcast.user.controller;

import cn.itcast.user.enums.Gender;
import cn.itcast.user.pojo.Person;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("enum/test")
@Slf4j
public class EnumController {

//   枚举是一个特殊的类,它表示一组有限的值。在Java中,枚举类型是用于定义命名常量的一种方式。枚举常量是静态的、最终的和公共的,它们可以在整个应用程序中使用,而且具有自己的名称和值。
//   它是将常量分组为一组的一种方法。枚举可以作为常量池使用,这样可以提高代码的可读性和可维护性。枚举在Java中非常有用,因为它们可以减少代码中的硬编码,并使代码更加自然和易于理解
//   http://localhost:8081/enum/test/getTest01?gender=MALE
//   返回结果:
// {
//   "code": 1,
//      "desc": "男士"
//}
    @GetMapping("getTest01")
    @ResponseBody
    public Gender getTest01(@ModelAttribute("gender") Gender gender) {
        return gender;
    }

    @GetMapping("getTest02")
    public Person getTest02(Person person) {
        return person;
    }

    @PostMapping("postTest01")
    @ResponseBody
    public Gender postTest01(@ModelAttribute("gender") Gender gender) {
        return gender;
    }

    @PostMapping("postTest02")
    public Person postTest02(@RequestBody Person person) {
        return person;
    }

    @PutMapping("putTest01")
    public Gender putTest01(@ModelAttribute("gender") Gender gender) {
        return gender;
    }

    @PutMapping("putTest02")
    public Gender putTest02(@RequestBody Person person) {
        return person.getGender();
    }

    @PutMapping("putTest03")
    public Person putTest03(@RequestBody Person person) {
        return person;
    }
}

  • 7
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值