@Param 是Mybatis提供的,提供的原因,我可以从2点去误导你- -
第一,java并没有传形参值的能力, 所有你定义的变量,在java中传递时都是以arg1,arg2,arg3这种形式传递的,mybatis无法辨别哪个值时哪个值,编译没问题,但是运行的时候,匹配不了对应值,会出错或者没有结果。
第二,mybatis的sqlSession 执行crud方法时候,只允许带入一个参数值,对于多参数的方法,需要把所有的参数单独包装一下,封装成一个类,然后在传递给Mybatis,这也是为什么多个参数值的时候,带入的参数值类型时map,