首先,遇到这个问题的情况下就说明你的实体接收类重写了构造函数,并且你的构造函数无法对应上你的Sql查询语句。
我的Mybatis的版本是3.5.0
前阵子在用Mysql写select语句的时候,发生了 Invalid value for getLong() 异常,Debug发现Mabatis在用Long类型为返回的Varchar赋值(这边赋值表示Mysql返回的Rs给Java的Entity赋值),用Long给String当然赋值不上,因此就报错了。
查Mybatis的gitHub可以知道,是构造函数搞的鬼。
以下截图自Mybatis的中文版doc
Mybatis在解析Mysql返回的数据的时候,会赋值给对应的Entity实体类。
以下是具体的源码,类是 DefaultResultSetHandler
private Object createResultObject(Resul