package cn.imust.mp.enums; import com.baomidou.mybatisplus.annotation.IEnum; public enum SexEnum implements IEnum<Integer> { MAN(1,"男"), WOMAN(2,"女"); private int value; private String desc; SexEnum(int value,String desc){ this.value=value; this.desc=desc; } @Override public Int...
方法一:采用继承IEnum实现 @Getter@AllArgsConstructorpublic enum RoleType implements IEnum { ADMIN("1"), COMMON("2"); private String type; @Override public Serializable getValue() { return type; }} 1. 方法二:注解方式,在枚举类需要解析的属性上增加@EnumValue注解 @Getter@AllArgsConstructorpublic e...
mybatis-plus:configuration:log-impl:org.apache.ibatis.logging.stdout.StdOutImpltype-enums-package:com.example.mybatisplus.enum#枚举类的包路径,一定不也能错,否则报错 1.2 方式二 publicenumSexEnum{ MALE(1,"男"), FEMALE(2,"女"); SexEnum(Integer code, String value) {this.code = code;this.va...
SpringBoot+Mybatis 实体使用枚举类型时报错:No enum constant com.test.model.survey.QuType.1 原因是无法使用Mybatis默认的转换器EnumTypeHandler 进行转换,解决方法: 只需要修改mybatis文件,添加ResultMap配置,对需要枚举转换的字段配置特定的转换类EnumOrdinalTypeHandler <?xml version="1.0" encoding="UTF-8"?> <...
在保存的时候,前端需要传递@JsonValue标记的枚举类属性的值,即"男/女";因为Enum的属性ordinal(int),在测试过程中,传枚举值在枚举类中的定义顺序(或者称为索引,顺序从0开始),也可以转换为相应的枚举值,比如:上面定义的SexEnum枚举,前端传0或者"0",会转换成MAN,传1或者"1"会转换成WOMAN;传其他值会报异常:com...
先看下原来的调用层级:类型转换处理类调用CompositeEnumTypeHandler,CompositeEnumTypeHandler再根据当前枚举类是否使用了@EnumValue注解,如果使用了就调用MybatisEnumTypeHandler,如果没使用,就调用的EnumTypeHandler。 这里其实知道原因过后就简单了,因为知道getObject这个方法需要调用只有一个参数的方法。那么这里我们只需要重新定...
private UserSexEnum sex; /** *邮箱 */ private String email; //省略getter setter } ``` # 3、启用枚举类型转换 定义枚举类型转换器:使用`@MappingType( IEnum.class)`,其中`IEnum`实现类是Mybatis plus枚举类型转换器 ```java @TableName("user") public class User { private Long id; /** *...
@TestvoidenumTest(){User user=newUser();user.setName("liu");user.setAge(29);user.setEmail("liu@powernode.com");user.setGenderEnum(GenderEnum.MAN);user.setStatus(1);userMapper.insert(user);} 此时我们查看控制台,会发现添加失败了
大大简化了开发流程。在mybatis-plus中,我们可以通过实现IEnum接口并使用JsonFormat注解来处理这种数值与字符串的转换需求。其中,shape属性设置为JsonFormat.Shape.OBJECT表示返回的结果将是一个对象,而非普通的字符串。这样,我们就可以在前端展示时直接获取到枚举的名称,而无需进行额外的判断或转换。
private UserStatusEnum status; } // 查询示例 userMapper.selectList( new LambdaQueryWrapper<User>() .eq(User::getStatus, UserStatusEnum.NORMAL) ); 📝 原因: 类型安全 自动处理数据库和枚举转换 避免魔法值 代码可读性更强 自动处理逻辑删除