当前使用版本(必填,否则不予处理)

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