mybatis中@Param注解中遇到的问题——一定要注意import哪个包

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

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

mapper.java内容如下

mapper.xml查询如下

 查询findByPhoneA时,系统异常如下: 

 从网上找了一下,有人说把参数名改成arg0,arg1就可以,实际运行了一下,确实可行,但是这不是解决问题的办法。后来请教了一个高手,他说有可能是导包的问题,回过头查看Mapper.java文件,发现问题确实出在这里。

因为开发环境用的是IDEA,在导包时,他默认第一个导入的包如下图,当时没有查看就回车继续了。更换成第二个包,以后上述问题解决。也就是要导入。

import org.apache.ibatis.annotations.Param;

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

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值