springboot mybatis mybatisplus实体枚举类型自动转换及获取其List通用

整一个

public interface BaseEnum {
    /**
     * 获取类型
     *
     * @return
     */
    String getValue();

    /**
     * 获取名称
     *
     * @return
     */
    String getMessage();


}

整一个实体类

@Data
public class Test implements Serializable {

    private static final long serialVersionUID = 1L;

    @TableId(value = "id", type = IdType.ID_WORKER_STR)
    private String id;

    private TestType status;
}

整一个枚举类型

@Getter
@AllArgsConstructor
@JsonFormat(shape = JsonFormat.Shape.OBJECT)//最主要这个注解
public enum TestType implements BaseEnum {
    TEST("测试"),
    NORMAL("正常");

    private String label;

    @Override
    public String getValue() {
        return this.toString();
    }

    @Override
    public String getMessage() {
        return this.label;
    }
}

用mybatisplus写一个通过id查询数据的接口

 Test test=testService.getById(id);

返回值为

{
   "row": {
      "id": "123",
      "status": {
        "label": "正常",
        "value":"NORMAL"
      }
    }
}

本文返回值为map类型,用了lombok,
新增修改传值使用Test类可以直接接收无需手动转换
postman测试 提交数据

{
  "id": "123",
  "status": "TEST"
}

保存或修改成功

通用获取枚举信息

/**
此类自行根据需求修改
*/
public class EnumUtil {
    public static void enumToBeanList(Class clz) {
        try {
        	//可以添加 对class类型进行判断是否为枚举类
            //得到枚举获取值方法
            Method mt = clz.getDeclaredMethod("values", (Class[]) null);
            //得到基础枚举集合
            BaseEnum[] baseEnums = (BaseEnum[]) mt.invoke(null, null);
            //遍历循环枚举存入List集合
            for (BaseEnum baseEnum : baseEnums) {
                String value = baseEnum.getValue();
                String label = baseEnum.getMessage();
                System.out.println("label" + label);
                System.out.println("value" + value);
            }
        } catch (Exception e) {
            //自行处理异常
        }
    }
}
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值