SpringBoot+Mybatis-plus:使用枚举接收参数并返回数据
文章目录
- SpringBoot+Mybatis-plus:使用枚举接收参数并返回数据
- 枚举的好处
- 枚举使用场景
- 枚举在项目中的使用
- 第一种形式
- 第二种形式
- 实体类的枚举字段保存到数据库,并且返回时自动映射到枚举属性上
- 实体类枚举字段返回给前端
- 实体类枚举字段接收前端参数
- 注意事项说明
SpringBoot+Mybatis-plus:使用枚举接收参数并返回数据
最近项目当中大量使用到枚举,特此记录下项目当中使用枚举的好处,场景,使用方式。
枚举的好处
- 可读性高, 易理解
- 统一参数类型,避免传参错误
- 线程安全,全局唯一,无法修改
枚举使用场景
在实际的使用当中,当某个对象或者某个属性,需要有多个可供选择的状态或者描述,例如人的性别,支付的状态,错误的类型等等,都可以使用枚举。
枚举在项目中的使用
通常在项目当中会存在两种形式的枚举
第一种形式
/*** 性别枚举** @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:使用枚举接收参数并返回数据相关推荐
- springboot传入json和文件_Spring Boot之 Controller 接收参数和返回数据总结(包括上传、下载文件)...
server: port: 8088 servlet: context-path: /sid spring: mvc: view: prefix: / suffix: .html /** * 返回界面 ...
- SpringBoot+Mybatis使用Enmu枚举类型总是报错 No enum constant XX解决办法
环境SpringBoot+Mybatis 比如: 数据库中User表存放status字段值为1,想要通过Mybatis转换后为正在使用 当然,可以使用if else 但是状态值很多时,就变得很复杂,且 ...
- Springboot AOP注解方式获取请求参数及返回值并发送至rabbitMQ
业务需求需要将http请求参数与返回值采集,考虑使用AOP形式,获取到请求值与返回值之后将数据封装为json字符串发送到rabbitMQ中,消费者消费数据后将处理后的数据保存至mongodb或其 ...
- delphi tclientsocket接收不到返回数据_NB-IOT联网及模块UDP数据传输过程
一.NB-IOT联网过程 二.NB模块UDP数据传输过程 1)接通电源/重新启动,模块正常启动. 2)AT+NBAND?检查当前的频带信息,确认是否支持模块模型. 3)在3)AT+NBAND=5通信模 ...
- delphi tclientsocket接收不到返回数据_RS—485中教你主站发送报文结构、从站返回报文结构?系列11...
作者:马乐 1.主站发送报文结构 大家可以看到我之前写的文章中的程序都是没有什么具体功能的,都是两个站点之间互相传递数据,这些数据我们只是看看是否可以正常接收发送,数据本身是没有任何含义的.很明显在实 ...
- android发送http post请求函数带参数带返回数据 静态类 源码
调用示例 String str=HttpRequest.sendPost("http://supermindsoft.com/test/index.php", "mm=1 ...
- SpringMVC之使用SpringMVC获取参数与返回数据
⭐️前面的话⭐️ 本篇文章将介绍SpringMVC的概念,SpringMVC项目的创建,如何使用SpringMVC实现前端参数的获取与后端参数的返回等内容.
- Mybatis返回类型和接收参数为Map类型
事情的起因是这样的:今天在项目中查看mybatis框架的sql语句时候,看到接收参数和返回参数都是Map类型,这使得我突然眼前一亮,因为之前所接触过的传参和返回类型,除了java的常用数据类型之外,就 ...
- SpringBoot - Post请求-接收参数
一.接收Form表单数据 1.1.基本的接收方法 1.下面样例 Controller 接收 form-data 格式的 POST 数据: package com.example.demo;import ...
最新文章
- 第三章 C#程序结构 (3.3 循环结构)
- Git 2.5增加了工作树、改进了三角工作流、性能等诸多方面
- objectvie-c 数组特别遍历方法
- C/C++ 常见误区
- java ide 的优劣_Java程序员的困惑 Java IDE到底怎么选
- 企业面试之LeetCode刷题心得
- 属性值动态调整_【第1603期】CSS 自定义属性:使用篇
- Android Launcher 应用开发
- 基于GD库的php验证码类(支持中英文字体、背景、干扰点线、扭曲…….)
- 学习了pr后的收获_PR学习感悟
- 【网络技术联盟站】瑞哥教你如何使用 Console 接口管理设备
- 解决C:\Users\Admin\AppData\Roaming\npm\nodemon.ps1
- PostgreSQL 杀会话
- 【Vue3+Vite+TS项目集成ESlint +Prettier实现代码规范检查和代码格式化】
- 什么是SSL协议,浅谈SSL协议。
- java使用cxf调用https方式的webservice
- python 利用for 循环简便生成list
- 基于javaweb的医院分诊挂号住院管理系统(java+springboot+freemarker+mysql)
- 史上最全的IDEA快捷键总结
- 什么叫硬盘的4K对齐?4K对齐是什么意思?
热门文章
- T端 GameObject上的T端魔兽私服传送脚本
- APP广告变现渠道有哪些?开发者该如何选择?
- Linux内存管理(十六):buddy 系统分配器前篇
- win10访问局域网出现“请检查名称的拼写”如何解决
- 爬虫---Beautiful Soup 初始
- BR1001/BR2262 应用常见问题汇总
- 关于SQL Server通讯协议加密及与JDBC通讯问题处理
- CSS3 六边形绘制
- Pytorch中的contiguous()函数
- js正则替换html标签内容,JavaScript正则替换HTML标签功能的示例代码分享