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

简介: 使用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, "不详");
    // 将注解标识的属性值存储到数据库中
    @EnumValue
    private Integer sex;
    // 将注解标识的属性值返回给前端
    @JsonValue
    private 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();
}


测试

image.png

 怎么回事?前端并没有输出任何内容,难道是装13不成?别急,让我们使用测试类简单分析一波  根据测试类的返回值可以得知,从数据库中查询到的sex字段值既不是0|1也不是男|女而是null,这到底是怎么回事?

image.png

 经过半天的百度和试错,最终将原因锁定在字段类型上,原来是我们的数据库中sex的类型是tinyint而枚举类中使用@EnumValue修饰的字段类型是integer,由于字段类型不匹配导致返回的是一个null,这也就能够解释得通为什么前端不显示sex了。  我的解决方案是将数据库中的类型改为int,虽然说数据库中使用tinyint可以节省数据库的存储空间,但是由于本人的能力有限,无法找到tinyint对应的java类型,最后无奈修改了数据库的表结构,如果小伙伴们有妙招的话,还请评论区告诉小扎扎如此操作前端就显示信息了


相关文章
|
6月前
|
存储 缓存 Java
干翻Mybatis源码系列之第八篇:Mybatis二级缓存的创建和存储
干翻Mybatis源码系列之第八篇:Mybatis二级缓存的创建和存储
|
6月前
|
前端开发 Java 数据库连接
MyBatis查询优化:枚举在条件构建中的妙用
MyBatis查询优化:枚举在条件构建中的妙用
|
数据库连接 测试技术 数据库
MybatisPlus之通用枚举&代码生成器&多数据源
今天我们来了解MyBatisplus 的通用枚举和代码生成器和多数据源。
MyBatis-Plus之枚举
MyBatis-Plus之枚举
107 0
|
6月前
|
存储 SQL 数据安全/隐私保护
Mybatis-Plus 拦截SQL语句实现加解密存储
Mybatis-Plus 拦截SQL语句实现加解密存储
83 0
|
6月前
|
SQL 存储 测试技术
深入了解MyBatis-Plus中的枚举处理器及实例演示
深入了解MyBatis-Plus中的枚举处理器及实例演示
338 0
|
存储 数据库
MybatisPlus通用枚举
MybatisPlus通用枚举
108 0
|
存储 JSON Java
mybatisPlus之通用枚举及字段类型处理器
mybatisPlus之通用枚举及字段类型处理器
|
Java 数据库连接 数据库
解析Java中的MyBatis Plus注解 @EnumValue:优雅处理枚举值映射
在数据库操作中,枚举类型的值往往需要与数据库表中的某个字段进行映射,以便在操作中能够进行相应的转换。MyBatis Plus作为一款强大的ORM框架,提供了注解 `@EnumValue`,使开发者能够更加灵活地处理枚举值与数据库字段的映射关系,从而减少了繁琐的转换逻辑。本文将详细介绍 `@EnumValue` 注解的用法及其在持久层开发中的应用。
3574 0
|
Java 数据库连接 数据库
深入了解Java中的MyBatis Plus注解 @IEnum:优雅处理枚举映射
在数据库操作中,经常需要将Java中的枚举类型映射到数据库表中的某个字段。MyBatis Plus作为一款强大的ORM框架,提供了注解 `@IEnum`,使得开发者能够更加优雅地处理枚举与数据库字段之间的映射关系。本文将详细介绍 `@IEnum` 注解的用法及其在持久层开发中的应用。
694 0