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

com.baomidou mybatis-plus-boot-starter 3.4.3.3

该问题是如何引起的?(确定最新版也有问题再提!!!)

springboot 配置了 type-handlers 这个属性 (这一条sql并没有使用到type-handlers) mybatis-plus.type-handlers-package=com.xxx.web.typehandler 调用自带的selectById方法,id是Long类型 couponBaseMapper.selectById(param.getId()) sql打印结果(公司项目,我在此去掉了一部分表字段)

==>  Preparing: SELECT ID,HOSPITAL_ID,NAME,`DESC`,PRICE, xxxx FROM coupon_base WHERE ID=?
==> Parameters: f5480ebe5580695fd7773e68751ee61f(String)
<==      Total: 0

sql在执行时 id变成了uuid或者MD5的字符串了

param.getId()是Long包装类型的,哪怕我用数字写死也是这个结果

经过一上午排查,我把 mybatis-plus.type-handlers-package=com.xxx.web.typehandler 改成 mybatis.type-handlers-package=com.xxx.web.typehandler 然后上述问题就正常了

不知道这是mybatis-plus的bug还是feature

重现步骤(如果有就写完整)

报错信息

Comment From: miemieYaho

mybatis.type-handlers-package=com.xxx.web.typehandler 这是配置没生效而不是正常了,你看看你com.xxx.web.typehandler包下的类是不是写bug了

Comment From: wanghuzhou

mybatis.type-handlers-package=com.xxx.web.typehandler 这是配置没生效而不是正常了,你看看你com.xxx.web.typehandler包下的类是不是写bug了

额,可是我并没有在 TableField注解中指定 typehandler ,也没有在xml的resultMap中指定,还是说我只要配了这个属性 mp就一定会去这个包下找class 处理是吗?

Comment From: miemieYaho

这是mybatis的逻辑,配了就会把包下的typehandler注入到mybatis里面

Comment From: wanghuzhou

好的,多谢解答