出现该报错的大部分原因是mapper.xml文件中的参数没有对应匹配。
当传入参数只有一个时候,就不需要设定@Param。接口参数只有一个,不管接口参数名是什么,这个时候#{xxx}没有限制,可以是0,param1,也可以是aaa,bbb。可以不加注解。
当传入的的参数>1的时候,就会出现该报错:mybatis的参数集就是上边说的默认值[0, 1, param1, param2]
,如果你不用默认值,就需要加上@Param
注解起别名。一旦加了注解,mybatis的参数集就和第一种情况一样了。
解决方法:
方法一:(设置下标)
UserMapping.xml
select * from login where name=#{0} and password=#{1}
方法二:(定义别名)
UserDao.java
public Login selectByCondition(@param("name")String username,@param("pwd")String password);
name、pwd 是别名对应UserMapping.xml里面的
select * from login where name=#{name} and password=#{pwd}