使用mybatisplus的通用枚举实现存储显示相分离

狡兔尚且三窟,多学一招总没错吧?
🚀🚀扎哇太枣糕的博客首页🚀🚀
在这里插入图片描述

🌏 抛出问题

  如果让你实现这么一个功能:将性别使用数字存储到数据库中,但是前端需要获取到的是具体的性别描述(比如男女),你会怎么实现?
在这里插入图片描述  相信有很多的小伙伴想到的就是,在前端或者后端使用if语句判断从数据库中获取到的值,如果是0的话就返回或者输出女,如果是1的话就返回或者输出男。

    可以 但不优雅

  那我用switch判断总算优雅了吧

    优雅 但不够装13

  不够装13也是错?低调不是错,但是我们要让老板感觉花这些钱雇自己他值了,甚至还要让他感觉他赚到了。

🌎 解决问题

  对于MP的通用枚举,官方文档如是说道:mybatis-plus的官方文档对通用枚举的介绍,总结来说就是简单的三个步骤:创建枚举类、修改配置文件、修改实体类字段属性,接下来就以一个案例加深小伙伴们的理解
第一步: 创建枚举类,并给相应的字段添加相应的注解,两个注解的注释都在代码中给出了

import com.baomidou.mybatisplus.annotation.EnumValue;
import com.fasterxml.jackson.annotation.JsonValue;
import lombok.AllArgsConstructor;
import lombok.Getter;/*** @author : mereign* @date : 2022/3/18 - 15:28* @desc : 性别的枚举类*/@Getter
@AllArgsConstructor
public enum SexEnum {FEMALE(0, "女"),MALE(1, "男"),GROUP(2, "组合"),NONE(3, "不详");// 将注解标识的属性值存储到数据库中@EnumValueprivate Integer sex;// 将注解标识的属性值返回给前端@JsonValueprivate String sexName;}

第二步: 配置文件

mybatis-plus:# 声明枚举类所在包type-enums-package: com.xiaoyu.enums

第三步: 修改实体类字段属性,其他的属性都照常设置

/*** 性别(0女1男2组合3不明)*/
private SexEnum sex;

前端控制器中使用的方法是MP中自带的list方法

/*** 查询所有歌手* @return*/
@RequestMapping(value = "/allSinger", method = RequestMethod.GET)
public Object allSinger() {// 查询所有的歌手信息并返回return service.list();
}

测试
在这里插入图片描述  怎么回事?前端并没有输出任何内容,难道是装13不成?别急,让我们使用测试类简单分析一波在这里插入图片描述  根据测试类的返回值可以得知,从数据库中查询到的sex字段值既不是0|1也不是男|女而是null,这到底是怎么回事?
  经过半天的百度和试错,最终将原因锁定在字段类型上,原来是我们的数据库中sex的类型是tinyint而枚举类中使用@EnumValue修饰的字段类型是integer,由于字段类型不匹配导致返回的是一个null,这也就能够解释得通为什么前端不显示sex了。在这里插入图片描述  我的解决方案是将数据库中的类型改为int,虽然说数据库中使用tinyint可以节省数据库的存储空间,但是由于本人的能力有限,无法找到tinyint对应的java类型,最后无奈修改了数据库的表结构,如果小伙伴们有妙招的话,还请评论区告诉小扎扎在这里插入图片描述如此操作前端就显示信息了在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/535066.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JDK和JRE的区别?main方法的注意点?强制和自动类型转换?

💡涉及的知识点速通🛫 JDK和JRE傻傻分不清?🛫 HelloWorld的输出都经历了啥?🛫 Java的三个版本都是啥?🛫 关于main方法你都知道啥?🛫 强制and自动类型转换都是啥?各位小…

安卓10不支持qmc解码_Root神器支持安卓10 面具Magisk v20.4+Magisk Manager v7.5.1

Magisk的功能和xposed框架的功能差不多,也有很多插件可安装,而且自带root,刷入这个Magisk后你的rom同时也就有root了(支持安卓7.0,7.1,8.0,8.1,9,10)这也是目前安装8.1root的普遍方法,因为目前s…

==和equals判等、空串和null串、字符串常用API

💡涉及的知识点速通🛫 关于变量和常量你都知道啥?🛫 &和&&、|和||有什么区别?🛫 关于字符串的问题你能答对几道?🪂 可以修改一个字符串中的值吗?🪂 字符串使用…

俩台电脑怎么设置同一局域网_方法 | 把手机上的照片传到电脑上

我想把手机上的照片/视频传到电脑上怎么办? 什么云盘,手机助手等等全扔到一边去,不用。请让我慢慢道来:现在,人们手机用的越来越多,即使在大街上,到处都是“低头族”。但是,有好多小伙伴问&…

数据持化技术的发展演变(SQL、JDBC、mybatis)

文章目录1 简单SQL语句1.1 查询1.2 新增1.3 修改1.4 删除1.5 多表查询2 JDBC2.1 什么是JDBC2.2 什么是jar和maven2.3 JDBC的使用2.4 JDBC总结3 mybatis3.1 什么是ORM?为什么是ORM不是JDBC?3.2 mybatis的使用3.3 mybatis总结4 mybatis与jdbc的逻辑相同处环境配置 j…

传统蒙文字体_蒙古要改回使用传统回鹘蒙文,这是种什么文字,蒙古为什么要改回...

喜欢就点关注吧!文字是一个国家的文化象征,也是其书面交流的主要工具,世界上的大多数国家都有自己独特的文字,我们的邻国蒙古也是如此,近日蒙古国实行了一场意义重大的文字改革,据新华社乌兰巴托3月18日报道&#xff0…

三态输出门实验报告注意事项_数电基础知识:各种IO输出的类型

集电极开路(OC)集电极开路输出的结构如图1所示,右边的那个三极管集电极什么都不接,所以叫做集电极开路;左边的三极管为反相之用,使输入为“0”时,输出也为“0”。对于图 1,当左端的输入为“0”时&#xff0…

数据持久化技术——MP

文章目录1 环境搭建1.1 创建一个maven的project1.2 pom.xml文件导入web开发依赖1.3 创建SpringBoot项目的主程序入口2 代码生成器3 配置数据库4 导入前端页面5 开始前端控制器的编码5.1 wrapper构造器mybatis-plus(简称 MP)是一个 MyBatis的增强工具,在 MyBatis 的基…

win7无法连接打印机拒绝访问_如何解决局域网无法访问SQL Server 2008 无法连接到(local)...

初次安装使用SQL server 2008时,可能会遇到无法连接到(local)的情况。那么,如何解决此问题?工具/原料: SQL server 2008方法/步骤1. 打开SQL server 配置管理器-->SQL server 网络配置-->实例名的协议(我的实例名为SQLEXPRESS)。2. 将S…

windows进程管理器_任务管理器就能搞定9成的电脑问题?方法在这里!

90% 对于电脑的不满,都逃不出这几个方面:电脑状态无法随时监测、运行卡顿、开机时间长、莫名黑屏、电池关键时刻不扛使(笔记本电池怎么保养?能不能一直插电源充电?可以戳这里→),很多小伙伴就选择安装第三方软件来解决…

三维网格精简算法java版_ISMAR 2020 | 商汤提出手机端实时单目三维重建系统

导读:商汤研究院和浙江大学CAD&CG国家重点实验室合作研发了一个手机端实时单目三维重建系统Mobile3DRecon。与现有的基于RGBD的在线三维重建或离线生成表面网格的系统不同,该系统结合前端位姿跟踪结果,允许用户使用单目摄像头在线重建场景…

【分类汇总】idea快捷键、idea配置、常用插件

写在前面 千万别看目录很长就感觉本篇博客很絮叨繁琐,里面多是配置的讲解贴了很多的图片方便大家了解,配置成功一次之后就可以一直使用了。 快捷键的使用建议大家先看,后续敲代码的时候刻意的使用快捷键,相信经过两三天的使用就可…

win10设置默认输入法_个性化设置技巧

个性化设置技巧子墨居士前言本次内容主要是win10系统自带的功能,不是用第三方软件优化桌面的情况下,让自己的电脑桌面能更美观、更舒服。系统自身的个性化设置主要是下图中的几个。鼠标右击->个性化设置。 第三方软件的效果会更好,毕竟是专…

什么叫组网_家庭wifi,如何组网最合适

wifi信号通过电磁波在空中传播的,属于微波通信的一种,因为微波本身及发射功率的限制,导致wifi的穿透能力比较差,北方比较厚的承重强,铁门、家具等对都会对wifi信号有较强的削弱作用。穿过的障碍物越多,这种…

java输入输出、数组初始化

💡涉及的知识点速通🛫 关于输入输出你都知道啥?🛫 关于控制路程都需要注意啥?🛫 关于数组的问题你能答对几道?🪂 数组初始化的小细节你都知道吗?🪂 这些Arrays的常见API你都掌握了吗?&#…

linux rm 命令删除文件恢复_Linux之恢复误删除文件

前言每当我们在生产环境服务器上执行rm命令时,总是提心吊胆的,因为一不小心执行了误删,然后就要准备跑路了,毕竟人不是机器,更何况机器也有 bug。那么如果真的删除了不该删除的文件,比如数据库、日志或执行…

java三大特征 重载与重写的区别

💡涉及的知识点速通🛫 OOP的三大特征都是什么?🪂 什么是封装?🪂 什么是继承?🪂 什么是多态?🛫 关于构造器你都知道什么?🛫 关于类的源文件都需要知道什么?🛫 重载和重写都是什…

发生身份验证错误_Python MySQL8.0 错误

Python MySQL8.0 错误:authentication plugin calling_sha2_password is not supported.Python3 进行到 python3 mysql(mysql-connector),然后安装mysql-8.0.16,照着示例程序运行 python,遇到这个大大的问题:authentic…

vue 获取当前元素的父元素_react获取触发元素的属性 e.target.dataset

我的react项目中一个应用场景就是在点击一个元素的时候想要获取到这个元素的属性。代码如下&#xff1a;renderyear()>{return(<div><div data-value"年初">年初</div> </div>);}//点击标签的时候触发的函数 TagClick(e)>{console.log…

为什么要学Redis(NoSQL数据库)

各位小伙伴们大家好&#xff0c;欢迎来到这个小扎扎的Redis 6专栏&#xff0c;在这个系列专栏中我对B站尚硅谷的Redis教程进行一个总结&#xff0c;鉴于 看到就是学到、学到就是赚到 精神&#xff0c;这波依然是血赚 ┗|&#xff40;O′|┛ &#x1f4a1;Redis知识点速览&…