不使用mybatis的@Param有的报错有的却不报错问题

前几天更换电脑重新安装新的idea发现在dao层,有的同事没有使用@Param注解,导致系统报错
错误如下:
org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.binding.BindingException: Parameter ‘uid’ not found. Available parameters are [arg1, arg0, param1, param2]

但是同事的电脑上没有使用@Param,也可以正常运行.

同一套代码在不同电脑上跑出来的结果不一样,那可以肯定两台电脑的运行环境肯定有所不同。

然后我就去网上寻找解决问题的方法

看到的第一种解决方式:

说是新版本的idea中默认多了些参数配置,需要删除掉
不使用mybatis的@Param有的报错有的却不报错问题

然后再讲target目录缓存清理掉,重新编译

我试了下,没有效果,还是有相同的错误

看到的第二种解决方式:

也是有个人和我有类似情况,然后他和他同事的不同如下:

直接说结论:我们不同的地方是ojdbc jar包不同,因为maven3不支持下载oracle的ojdbc,所以我通过一个jar包,然后注册到本地maven库里面。我将以前的maven库删除,使用同事的jar包注册,再clean,compile就可以了。
为什么会出现这种问题暂时还没有搞明白,先记录下来

具体操作:
1.删除 maven\repository\com\oracle 下的文件
2.将ojdbc6-11.2.0.3.jar包放到某一个文件夹下,比如E盘
3.注册ojdbc
mvn install:install-file -Dfile=E:\ojdbc6-11.2.0.3.jar -DgroupId=com.oracle -DartifactId=ojdbc6 -Dversion=11.2.0.3 -Dpackaging=jar -DgeneratePom=true -DcreateChecksum=true
4.clean

不使用mybatis的@Param有的报错有的却不报错问题

5.然后compile

我去看了下我的maven仓库,并没有对应的包,所以也没有解决

我看到的第三种方式:

在mapper接口上加上@param注解,如下图:

不使用mybatis的@Param有的报错有的却不报错问题

尝试了一下,可以解决这个问题,但是需要修改的地方太多,我们工程中之前都没有加,修改起来十分不方便

我和自己原来工程对比:

发现我再新的环境里配置外部的maven,如下图:

不使用mybatis的@Param有的报错有的却不报错问题而原来的环境用的idea自带的maven,如下图:

不使用mybatis的@Param有的报错有的却不报错问题

我就改了回去,然后就可以正常使用了。

总结:

1、几种方式可能都能解决,需要自己尝试一下,并看看自己问题产生的原因。

2、这个问题产生的原因是因为没有加@param注解,加上后就没问题,前期开发阶段建议做好规范,避免这个问题产生