在项目中碰到了如下问题:
图片说明

错误信息是:无法识别参数。
该错误时由于MyBatis传入多个参数时,出现的问题。在Mapper接口中加入@Param注解即可解决。
实际上@Param这个最后会被Mabatis封装为map类型的。

图片说明

  当不使用 @Param 标签时,MyBatis 是不认识哪个参数叫什么名字的。因此进行标记后,MyBatis可以成功识别。通过查阅其他资料,发现MyBatis从3.1.4开始,其表达式支持按照参数的自然名称来匹配,如{userId}里的userId,是方法上的自然参数名,没有通过注解修饰。但是需要编译器要启用parameters选项,由于我自己的idea没有成功调出该选项,因此使用了@Param注解的方式,解决了无法识别参数的问题。

更新:原因是Mapper接口的注解是Mybatis的注解,改为Spring的@Repository即可