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

目录
  • 一、通用枚举
  • 二、声明通用枚举属性
  • 三、配置扫描通用枚举
  • 四、注意、注意、注意

一、通用枚举

解决了繁琐的配置,让 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 枚举自动关联注入内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • MyBatis-Plus 使用枚举自动关联注入

    目录 什么是枚举自动注入? 实际效果 实现步骤 踩坑 解决方法 参数解析 总结 什么是枚举自动注入? 官方文档是这么解释的 解决了繁琐的配置,让 mybatis 优雅的使用枚举属性! 按我的理解是维护在内存中且不易修改的轻量级字典.目前觉得这个功能的使用场景相对有限,但是如果有用到的话开箱即用也是很棒的.废话不多说,接下来让我们看一下它的实际效果吧. 实际效果 通常情况下,我们会这样声明一个用户实体 public class User { private String id; private S

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

    目录 一.通用枚举 二.声明通用枚举属性 三.配置扫描通用枚举 四.注意.注意.注意 一.通用枚举 解决了繁琐的配置,让 mybatis 优雅的使用枚举属性! 按我的理解是维护在内存中且不易修改的轻量级字典.目前觉得这个功能的使用场景相对有限,但是如果有用到的话开箱即用也是很棒的.废话不多说,接下来让我们看一下它的实际效果吧. 一般搜索用户信息列表,列如用户有禁用和启用两个状态 @Data public class User implements Serializable { private s

  • MyBatis-Plus如何使用枚举自动关联注入详解

    目录 什么是枚举自动注入? 实际效果 实现步骤 踩坑 解决方法 参数解析 总结 什么是枚举自动注入? 官方文档是这么解释的 解决了繁琐的配置,让 mybatis 优雅的使用枚举属性! 按我的理解是维护在内存中且不易修改的轻量级字典.目前觉得这个功能的使用场景相对有限,但是如果有用到的话开箱即用也是很棒的.废话不多说,接下来让我们看一下它的实际效果吧. 实际效果 通常情况下,我们会这样声明一个用户实体 public class User {     private String id; priva

  • Mybatis plus通用字段自动填充的示例

    在进行持久层数据维护(新增或修改)的时候,我们通常需要记录一些非业务字段,比如:create_time.update_time.update_by.create_by等用来维护数据记录的创建时间.修改时间.修改人.创建人等信息.通常情况下我们需要对这些字段进行手动赋值.赋值的过程也比较冗余,都是重复操作. 通常是为create_time赋值为系统的当前时间.update_time赋值为系统修改操作执行时的当前时间. create_by(创建人).update_by(修改人)赋值为当前的登录用户的

  • mybatis中实现枚举自动转换方法详解

    前言 最近在工作中遇到一个问题,在设计数据库的时候,我们有时候会把表里的某个字段的值设置为数字或者为英文来表示他的一些特殊含义.就拿设置成数字来说,假如1对应是学生,2对应是教师,在Java里面定义成这样的枚举,但是一般使用mybatis查出来的话,我们想要让它自动装换成我们想要的枚举,不需要再手动根据数值去判断设置成我们想要的枚举.要是实现这样的效果,那么我们就要用到mybatis的BaseTypeHandler了. BaseTypeHandler介绍 让我们来看看要继承BaseTypeHan

  • MyBatis学习教程(五)-实现关联表查询方法详解

    一.一对一关联  1.1.提出需求 根据班级id查询班级信息(带老师的信息) 1.2.创建表和数据 创建一张教师表和班级表,这里我们假设一个老师只负责教一个班,那么老师和班级之间的关系就是一种一对一的关系. CREATE TABLE teacher( t_id INT PRIMARY KEY AUTO_INCREMENT, t_name VARCHAR() ); CREATE TABLE class( c_id INT PRIMARY KEY AUTO_INCREMENT, c_name VAR

  • Spring Boot集成MyBatis实现通用Mapper的配置及使用

    什么是通用Mapper 通用Mapper就是为了解决单表增删改查,基于Mybatis的插件.开发人员不需要编写SQL,不需要在DAO中增加方法,只要写好实体类,就能支持相应的增删改查方法. 关于MyBatis,大部分人都很熟悉.MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Pla

  • springboot+mybatis通过实体类自动生成数据库表的方法

    前言 本章介绍使用mybatis结合mysql数据库自动根据实体类生成相关的数据库表. 首先引入相关的pom包我这里使用的是springboot2.1.8.RELEASE的版本 <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.1.0</ve

  • Mybatis-Plus通用枚举的使用详解

    解决了繁琐的配置,让 mybatis 优雅的使用枚举属性! 修改表结构 ALTER TABLE `tb_user` ADD COLUMN `sex` INT ( 1 ) NULL DEFAULT 1 COMMENT '1-男,2-女' AFTER `deleted`; 定义枚举 public enum SexEnum implements IEnum<Integer> { MAN(1, "男"), WOMAN(2, "女"); private int v

  • ASP.NET Core实现自动依赖注入

    在开发.NET Core web服务的时候,我们习惯使用自带的依赖注入容器来进行注入. 于是就会经常进行一个很频繁的的重复动作:定义一个接口->写实现类->注入 有时候会忘了写Add这一步,看到屏幕上的报错一脸懵逼,然后瞬间反应过来忘了注入了.赶紧补上serviceCollection.AddXXX这句话 虽然说有很多开源框架已经实现了类似的工作,比如AutoFac,Unity等依赖注入框架.但是这些库都太庞大了,我个人还是喜欢轻量级的实现. 定义一个枚举 [AttributeUsage(At

随机推荐