当前位置: 首页 > ai >正文

MybatisPlus-16.扩展功能-枚举处理器

一.枚举处理器

我们的表中有标识用户状态的字段,这个字段中有两个状态值,1代表正常,2代表冻结。那么我们要使用这些状态就会出现一些问题:

1.如果状态值较多,那么使用数字去表示很麻烦。

2.状态值较多我们也无法通过数字去辨别具体哪个数字代表哪个状态。

因此我们基于数字去进行赋值和比较就很麻烦,容易出错。因此我们使用枚举表示。

package com.itheima.mp.enums;import com.baomidou.mybatisplus.annotation.EnumValue;
import lombok.Getter;@Getter
public enum UserStatus {NORMAL(1, "正常"),FREEZE(2, "冻结");private final int value;private final String desc;UserStatus(int value, String desc) {this.value = value;this.desc = desc;}
}

但是我们定义好枚举类后,并不能解决以下两个问题:

1.我们在定义实体类时,状态字段仍然是Integer类型。

2.在比较时仍然和Integer类型的字段比较。在赋值时仍然赋Integer。

这样会很麻烦。

因此我们会将User的status字段直接改为枚举类型UserStatus。枚举可以直接使用==比较。

但这样会带来另一个问题,数据库表当中status依然是int类型,但是po是枚举类型。那我们查到的数据库中的字段要去转枚举,而写入数据库时也要转为int类型。这样就会十分麻烦。这就涉及到java当中枚举类型和数据库中的类型的相互转换。 

mp为我们解决了这些问题,mp加入了枚举类型和json类型的处理器。

使用@EnumValue注解加到和数据库字段对应的枚举字段上,就能实现自动的对应。这样查询和写数据库时就会从枚举中查或写对应的值。

然后在配置文件中配置让枚举处理器生效的配置即可。 

 当修改过接口使用枚举后,我们进行数据查询。查到的数据如下,可以看到status变成了我们定义的枚举值。

如果我们不想让其返回枚举值,而是返回1,2或者是正常,冻结。我们可以使用注解@JsonValue,将该注解加在指定返回的属性上,指定查询枚举值时以哪个值返回。

package com.itheima.mp.enums;import com.baomidou.mybatisplus.annotation.EnumValue;
import com.fasterxml.jackson.annotation.JsonValue;
import lombok.Getter;@Getter
public enum UserStatus {NORMAL(1, "正常"),FORZEN(2, "冻结"),;@EnumValue      // 指定哪个枚举值映射到数据库字段private final Integer status;@JsonValue      // 指定查询枚举值时以哪个值返回private final String description;UserStatus(Integer status, String description) {this.status = status;this.description = description;}
}

http://www.xdnf.cn/news/15957.html

相关文章:

  • Windows PE文件内未用空间学习
  • DNS应用层协议
  • Linux驱动-中断-共享队列
  • 两个android,一个客户端一个服务器端
  • 2025.7.22 测试 总结
  • Web服务器(Tomcat、项目部署)
  • C# 中的装箱与拆箱
  • 今日行情明日机会——20250722
  • 基于AutoJawSegment项目的CBCT图像分割实践指南
  • 【bug】Yolo11在使用tensorrt推理numpy报错
  • Java 中 String 类的常用方法
  • OneCode 3.0 @TreeAnnotation及@ChildTreeAnnotation子树注解速查手册
  • 生存分析机器学习问题
  • 数据交换---JSON格式
  • IDEA-通过IDEA导入第三方的依赖包
  • Android常用的adb和logcat命令
  • Qt/C++源码/监控设备模拟器/支持onvif和gb28181/多路批量模拟/虚拟监控摄像头
  • RedisJSON 指令精讲JSON.TOGGLE 键翻转布尔值
  • Python趣味算法:实现任意进制转换算法原理+源码
  • 【无标题】buuctf-re3
  • 企业级IIS配置手册:安全加固/负载均衡/性能优化最佳实践
  • PyQt5—QLabel 学习笔记
  • 常用 Flutter 命令大全:从开发到发布全流程总结
  • ELF 文件操作手册
  • Java 动态导出 Word 登记表:多人员、分页、动态表格的最佳实践
  • C++11--锁分析
  • ospf技术
  • 【SpringAI实战】实现仿DeepSeek页面对话机器人
  • Jiasou TideFlow AIGC SEO Agent:全自动外链构建技术重构智能营销新标准
  • 技术与情感交织的一生 (十)