MyBatis-Plus通用枚举自动关联注入的实现

 更新时间:2021年06月22日 10:34:25   作者:DT辰白  
本文主要介绍了MyBatis-Plus通用枚举自动关联注入的实现,解决了繁琐的配置,让 mybatis 优雅的使用枚举属性,感兴趣的可以一起来了解一下

一、通用枚举

解决了繁琐的配置,让 mybatis 优雅的使用枚举属性!

按我的理解是维护在内存中且不易修改的轻量级字典。目前觉得这个功能的使用场景相对有限,但是如果有用到的话开箱即用也是很棒的。废话不多说,接下来让我们看一下它的实际效果吧。

一般搜索用户信息列表,列如用户有禁用和启用两个状态

@Data
public class User implements Serializable {
    private static final long serialVersionUID = 1L;
    private BigInteger id;
    private String name;
    private String email;
    private Integer status;
}
@GetMapping("/findById")
public User findById(){
     User user = userMapper.selectById(1);
     return user;
 }

查询结果:

在这里插入图片描述

如果前端接收到json数据后,需要的status字段属性值,不是1或者2,需要的是禁止或者启用的中文字,如何解决呢?

二、声明通用枚举属性

public enum StatusEnum implements IEnum<Integer> {
    DISABLE(1,"禁用"),
    ENABLE(2,"启用");
    private final Integer status; //数据库存储字段
    private final String desc;    //返回的显示描述
    StatusEnum(Integer status,String desc){
        this.status = status;
        this.desc = desc;
    }
    @Override
    public Integer getValue() {
        return this.status;
    }
    @JsonValue
    public String getDesc(){
        return this.desc;
    }
}

实体属性使用枚举类型

@Data
public class User implements Serializable {
    private static final long serialVersionUID = 1L;
    private BigInteger id;
    private String name;
    private String email;
    private StatusEnum status;
}

三、配置扫描通用枚举

#mybatis-plus
mybatis-plus:
  configuration:
    map-underscore-to-camel-case: true
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
  mapper-locations: classpath:com/example/plus/mapper/xml/*.xml
  typeEnumsPackage: com.example.plus.enums

加入该配置:

typeEnumsPackage: com.example.plus.enums

测试:

在这里插入图片描述

四、注意、注意、注意

1、记得加上@JsonValue注解,序列化时只返回这一个字段的值。

2、配置扫描通用枚举可能3.0版本以前版本配置不一样,本列使用的是3.0以上版本

3、通用枚举无法正确取值,可能会报这样的错误

Caused by: java.lang.IllegalArgumentException: No enum constant

解决方式:

去除 pom.xml中:spring-boot-devtools依赖 ,该插件会导致很多问题

到此这篇关于MyBatis-Plus通用枚举自动关联注入的实现的文章就介绍到这了,更多相关MyBatis-Plus 枚举自动关联注入内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • java多线程实现交通灯管理系统

    java多线程实现交通灯管理系统

    这篇文章主要为大家详细介绍了java多线程实现交通灯管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08
  • 详解Java的Proxy动态代理机制

    详解Java的Proxy动态代理机制

    Java有两种代理方式,一种是静态代理,另一种是动态代理。对于静态代理,其实就是通过依赖注入,对对象进行封装,不让外部知道实现的细节。很多 API 就是通过这种形式来封装的
    2021-06-06
  • 使用EasyPOI实现多sheet动态列导出

    使用EasyPOI实现多sheet动态列导出

    这篇文章主要为大家详细介绍了如何使用EasyPOI根据指定时间范围创建动态列,以及如何将数据组织成符合要求的格式并导出,感兴趣的可以了解下
    2025-03-03
  • JAVA中五个重定向的方式盘点

    JAVA中五个重定向的方式盘点

    页面重定向即页面从当前请求的页面,有条件或者定时跳转到其他页面,下面这篇文章主要给大家介绍了关于JAVA中五个重定向的方式,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-12-12
  • java类中serialVersionUID的作用及其使用

    java类中serialVersionUID的作用及其使用

    这篇文章主要介绍了java类中serialVersionUID的作用及其使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • Java中的包(package)是什么和使用方法

    Java中的包(package)是什么和使用方法

    包是Java中一种强大的组织代码的工具,它们帮助开发者将代码分组,防止命名冲突,并通过控制访问级别来增强代码的安全性,这篇文章主要介绍了Java中的包(package)是什么和如何使用它们,需要的朋友可以参考下
    2024-07-07
  • Spring @Configuration注解及配置方法

    Spring @Configuration注解及配置方法

    这篇文章主要介绍了Spring @Configuration注解及配置方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04
  • java  实现输出随机图片实例代码

    java 实现输出随机图片实例代码

    这篇文章主要介绍了java 实现输出随机图片实例代码的相关资料,需要的朋友可以参考下
    2017-06-06
  • Java中的原子类AtomicInteger使用详解

    Java中的原子类AtomicInteger使用详解

    这篇文章主要介绍了Java中的原子类AtomicInteger使用详解,原子操作是指不会被线程调度机制打断的操作,这种操作一旦开始,就一直运行到结束,中间不会有任何线程上下文切换,需要的朋友可以参考下
    2023-12-12
  • 全面解析SpringBoot自动配置的实现原理

    全面解析SpringBoot自动配置的实现原理

    这篇文章主要介绍了全面解析SpringBoot自动配置的实现原理的相关资料,需要的朋友可以参考下
    2017-05-05

最新评论