报错信息类似如下:

org.apache.ibatis.reflection.ReflectionException: Error instantiating class....  

java.lang.NoSuchMethodException: cn.pojo.Rules.<init>(......

原因:

没有找到对应构造方法,导致查询到的数据转换成pojo时报错。

解决方法:

仔细检查构造方法,核对构造方法的参数类型是否与查询出来的数据的类型一致;

本人碰到的情况就是,有参构造方法的参数数量跟查询出来的数据的字段是对应无误的,但是无法映射。最后仔细检查,发现是自动生成的oracle的mapper中, 数值类型的使用的是Long类型(网上查了下,数值字段长度大于等于11,通过Mybatis generator生成的mapper对应数值字段就会是Long类型), 而pojo是通过mysql数据库映射,使用generator自动生成的(该项目支持多种数据库),构造方法中的数值参数类型是Integer,参数类型不一致导致的映射错误。

pojo中:

Mybatis映射pojo报错,org.apache.ibatis.reflection.ReflectionException: Error instantiating class....

mysql的mapper.xml中:

Mybatis映射pojo报错,org.apache.ibatis.reflection.ReflectionException: Error instantiating class....

oracle的mapper.xml中:

Mybatis映射pojo报错,org.apache.ibatis.reflection.ReflectionException: Error instantiating class....

相关文章: