当前使用版本(必填,否则不予处理)
springBoot 2.3.2 mp:3.3.2
该问题是如何引起的?(确定最新版也有问题再提!!!)
ENABLE(1, "启用"), DISABLE(0, "禁用"), CANCEL(2, "注销");
private final int value;
private final String desc;
UserEnableStatus(int value, String desc) {
this.value = value;
this.desc = desc;
}
@Override
public String getDesc() {
return desc;
}
@Override
public Integer getValue() {
return value;
}
如果数据库value的雷士是tinyint,查询出来的Result结果集是Boolean类型被默认转换了,导致和静态枚举匹配不上。
以下是目前想到的4个解决方案: 1. 数据库将tinyint改成char 2. 关闭tinyint 0和1映射成Boolean类型 3. 重写com.baomidou.mybatisplus.extension.handlers.MybatisEnumTypeHandler,然后设置defaultEnumTypeHandler 4. 避开0和1的value值
重现步骤(如果有就写完整)
报错信息
Comment From: miemieYaho
所以你想问啥?
Comment From: no1412
https://mybatis.plus/guide/faq.html#字段类型为 bit、tinyint(1) 时映射为 boolean 类型
Comment From: aimilin6688
tinyint(1) 换成 tinyint(2) 不就解决你的问题了,tinyint(1) 默认都是转换成Boolean 类型的数据,没毛病
Comment From: abc136609517
tinyint的长度不要设置为1就行 mp默认是字段为bit类型和tinyint[1]映射为Boolean