在使用IDEA开发的mybatis查询数据库时,遇到了很奇怪的问题,当查询参数只有一个时,可以正常查到结果,但是如果查询参数有两个,则会抛异常。
mapper.java内容如下
mapper.xml查询如下
查询findByPhoneA时,系统异常如下:
从网上找了一下,有人说把参数名改成arg0,arg1就可以,实际运行了一下,确实可行,但是这不是解决问题的办法。后来请教了一个高手,他说有可能是导包的问题,回过头查看Mapper.java文件,发现问题确实出在这里。
因为开发环境用的是IDEA,在导包时,他默认第一个导入的包如下图,当时没有查看就回车继续了。更换成第二个包,以后上述问题解决。也就是要导入。
import org.apache.ibatis.annotations.Param;
原因分析:因为导入了错误的包,所以在编译时没有识别注解,系统自动反射了参数的个数,这也就是为啥arg0,arg1可以正常运行。