前言
Mybatis-Plus中使用Mapper进行select查询实体时,可能会遇到Invalid value for getInt()的报错,然而对应字段往往和Integer无关。
这个错误很好理解,通常是由于数据库表中的字段数据类型和实体类的对应属性数据类型不匹配,但这些很容易检查,基本不可能出错。
但在确认没有正常问题时,需要检查是否存在对实体定义了含参构造函数,而没有给出无参构造函数的情况。在这种情况下,这个错误就会莫名出现。
关于这个BUG的一种猜测是:Java在没有自定义构造函数的时候会默认有一个空构造函数,但是自定义后就没有了。也许Mybatis执行select的时候是先创建对象(找不到无参构造),再给对象设置参数的。
具体原因需要看源码才能知道。
参考:https://blog.csdn.net/W1948730080/article/details/105123966
后记
首发于 silencezheng.top,转载请注明出处。