在使用IDEA开发的mybatis查询数据库时,遇到了很奇怪的问题,当查询参数只有一个时,可以正常查到结果,但是如果查询参数有两个,则会抛异常。
mapper.java内容如下

mapper.xml查询如下

查询findByPhoneA时,系统异常如下:
![]()
从网上找了一下,有人说把参数名改成arg0,arg1就可以,实际运行了一下,确实可行,但是这不是解决问题的办法。后来请教了一个高手,他说有可能是导包的问题,回过头查看Mapper.java文件,发现问题确实出在这里。
因为开发环境用的是IDEA,在导包时,他默认第一个导入的包如下图,当时没有查看就回车继续了。更换成第二个包,以后上述问题解决。也就是要导入。
import org.apache.ibatis.annotations.Param;

原因分析:因为导入了错误的包,所以在编译时没有识别注解,系统自动反射了参数的个数,这也就是为啥arg0,arg1可以正常运行。

在IDEA中使用MyBatis进行数据库查询时,如果查询参数超过一个,会出现异常。问题根源在于导入了错误的@Param包。正确解决方案是导入org.apache.ibatis.annotations.Param,而不是com.sun.proxy.$Proxy的包。错误的包导致编译时未识别注解,系统通过参数位置反射,而arg0, arg1是自动反射的结果。"
76013824,5143223,深入理解KVM虚拟化技术,"['虚拟化技术', 'Linux内核', 'QEMU', 'KVM管理', '存储虚拟化', '网络虚拟化']
最低0.47元/天 解锁文章
961





