文章目录

  • SpringBoot+Mybatis-plus:使用枚举接收参数并返回数据
    • 枚举的好处
    • 枚举使用场景
    • 枚举在项目中的使用
      • 第一种形式
      • 第二种形式
      • 实体类的枚举字段保存到数据库,并且返回时自动映射到枚举属性上
      • 实体类枚举字段返回给前端
      • 实体类枚举字段接收前端参数
      • 注意事项说明

SpringBoot+Mybatis-plus:使用枚举接收参数并返回数据

最近项目当中大量使用到枚举,特此记录下项目当中使用枚举的好处,场景,使用方式。

枚举的好处

  1. 可读性高, 易理解
  2. 统一参数类型,避免传参错误
  3. 线程安全,全局唯一,无法修改

枚举使用场景

在实际的使用当中,当某个对象或者某个属性,需要有多个可供选择的状态或者描述,例如人的性别,支付的状态,错误的类型等等,都可以使用枚举。

枚举在项目中的使用

通常在项目当中会存在两种形式的枚举

第一种形式

/*** 性别枚举** @author hjljy*/
@Getter
public enum SexEnum {/*** 性别枚举*/DEFAULT(-1, "保密"),WOMAN(0, "女"),MAN(1, "男");@EnumValue //标记存储到数据库的值@JsonValue //标记json返回的值private final Integer code;private final String remark;SexEnum(Integer code, String remark) {this.code = code;this.remark = remark;}}

第二种形式

/*** 用户类型枚举** @author hjljy*/
public enum SysUserTypeEnum {/*** 超级管理员*/SUPER_ADMIN,/*** 系统管理员*/SYS_ADMIN,/*** 普通管理员*/ADMIN,/*** 普通账号*/NORMAL
}

第一种形式,通常是使用的自定义的属性(code,remark)来进行判断和保存到数据库的
第二种形式,是直接使用的SUPER_ADMIN 这个实例来判断和保存的。

实体类的枚举字段保存到数据库,并且返回时自动映射到枚举属性上

如果是第一种形式的枚举,Mybatis-plus提供了相关的处理方式,可以进行枚举保存和隐射处理。官方文档地址:mybatis-plus枚举处理
具体处理方式:
第一步,用@EnumValue 标记响应要保存在数据库的值。
第二步,springboot配置文件当中添加配置

mybatis-plus:# 支持统配符 * 或者 ; 分割   切换成自己枚举所在的包typeEnumsPackage: com.baomidou.springboot.entity.enums

如果是第二种形式的枚举,没有任何自定义的字段,无需任何操作,直接正常保存和返回就可以,保存到数据库的内容就是枚举类型的名称,例如:SUPER_ADMIN ,SYS_ADMIN。

实体类枚举字段返回给前端

第一种形式的枚举,在需要返回的字段上添加@JsonValue //标记为json返回的值 注意:只能返回一个字段,不能返回多个。
第二种形式,无需处理。

实体类枚举字段接收前端参数

第一种形式的枚举,在添加了@JsonValue注解的情况下,直接接受对应字段的值即可正确的封装。例如:当前端传入的值是’1’,‘0’,’-1’就会自动映射。
第二种形式,无需处理。

注意事项说明

1 枚举的比较,第二种形式的枚举在和字符串进行比较时,需要用到name()方法,例如:

SysUserTypeEnum.SUPER_ADMIN.name().equels("SUPER_ADMIN")

2 无法接收前端的数字类型,或者无法接收的数字类型最后映射的结果错乱,报错等情况,让前端将数字类型转成string类型传给后端即可。原因是因为,枚举类型映射如果是数字类型会去根据角标进行匹配,角标是从0开始的,所以尽管你使用@JsonValue标记的是Intger code,但是还是会根据角标去匹配,所以需要转成string。

SpringBoot+Mybatis-plus:使用枚举接收参数并返回数据相关推荐

  1. springboot传入json和文件_Spring Boot之 Controller 接收参数和返回数据总结(包括上传、下载文件)...

    server: port: 8088 servlet: context-path: /sid spring: mvc: view: prefix: / suffix: .html /** * 返回界面 ...

  2. SpringBoot+Mybatis使用Enmu枚举类型总是报错 No enum constant XX解决办法

    环境SpringBoot+Mybatis 比如: 数据库中User表存放status字段值为1,想要通过Mybatis转换后为正在使用 当然,可以使用if else 但是状态值很多时,就变得很复杂,且 ...

  3. Springboot AOP注解方式获取请求参数及返回值并发送至rabbitMQ

       业务需求需要将http请求参数与返回值采集,考虑使用AOP形式,获取到请求值与返回值之后将数据封装为json字符串发送到rabbitMQ中,消费者消费数据后将处理后的数据保存至mongodb或其 ...

  4. delphi tclientsocket接收不到返回数据_NB-IOT联网及模块UDP数据传输过程

    一.NB-IOT联网过程 二.NB模块UDP数据传输过程 1)接通电源/重新启动,模块正常启动. 2)AT+NBAND?检查当前的频带信息,确认是否支持模块模型. 3)在3)AT+NBAND=5通信模 ...

  5. delphi tclientsocket接收不到返回数据_RS—485中教你主站发送报文结构、从站返回报文结构?系列11...

    作者:马乐 1.主站发送报文结构 大家可以看到我之前写的文章中的程序都是没有什么具体功能的,都是两个站点之间互相传递数据,这些数据我们只是看看是否可以正常接收发送,数据本身是没有任何含义的.很明显在实 ...

  6. android发送http post请求函数带参数带返回数据 静态类 源码

    调用示例 String str=HttpRequest.sendPost("http://supermindsoft.com/test/index.php", "mm=1 ...

  7. SpringMVC之使用SpringMVC获取参数与返回数据

    ⭐️前面的话⭐️ 本篇文章将介绍SpringMVC的概念,SpringMVC项目的创建,如何使用SpringMVC实现前端参数的获取与后端参数的返回等内容.

  8. Mybatis返回类型和接收参数为Map类型

    事情的起因是这样的:今天在项目中查看mybatis框架的sql语句时候,看到接收参数和返回参数都是Map类型,这使得我突然眼前一亮,因为之前所接触过的传参和返回类型,除了java的常用数据类型之外,就 ...

  9. SpringBoot - Post请求-接收参数

    一.接收Form表单数据 1.1.基本的接收方法 1.下面样例 Controller 接收 form-data 格式的 POST 数据: package com.example.demo;import ...

最新文章

  1. 第三章 C#程序结构 (3.3 循环结构)
  2. Git 2.5增加了工作树、改进了三角工作流、性能等诸多方面
  3. objectvie-c 数组特别遍历方法
  4. C/C++ 常见误区
  5. java ide 的优劣_Java程序员的困惑 Java IDE到底怎么选
  6. 企业面试之LeetCode刷题心得
  7. 属性值动态调整_【第1603期】CSS 自定义属性:使用篇
  8. Android Launcher 应用开发
  9. 基于GD库的php验证码类(支持中英文字体、背景、干扰点线、扭曲…….)
  10. 学习了pr后的收获_PR学习感悟
  11. 【网络技术联盟站】瑞哥教你如何使用 Console 接口管理设备
  12. 解决C:\Users\Admin\AppData\Roaming\npm\nodemon.ps1
  13. PostgreSQL 杀会话
  14. 【Vue3+Vite+TS项目集成ESlint +Prettier实现代码规范检查和代码格式化】
  15. 什么是SSL协议,浅谈SSL协议。
  16. java使用cxf调用https方式的webservice
  17. python 利用for 循环简便生成list
  18. 基于javaweb的医院分诊挂号住院管理系统(java+springboot+freemarker+mysql)
  19. 史上最全的IDEA快捷键总结
  20. 什么叫硬盘的4K对齐?4K对齐是什么意思?

热门文章

  1. T端 GameObject上的T端魔兽私服传送脚本
  2. APP广告变现渠道有哪些?开发者该如何选择?
  3. Linux内存管理(十六):buddy 系统分配器前篇
  4. win10访问局域网出现“请检查名称的拼写”如何解决
  5. 爬虫---Beautiful Soup 初始
  6. BR1001/BR2262 应用常见问题汇总
  7. 关于SQL Server通讯协议加密及与JDBC通讯问题处理
  8. CSS3 六边形绘制
  9. Pytorch中的contiguous()函数
  10. js正则替换html标签内容,JavaScript正则替换HTML标签功能的示例代码分享