MyBatis-Plus通用枚举自动关联注入的实现
作者: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 枚举自动关联注入内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!