今天在使用mybatis对数据库进行添加操作时遇到问题,mapper接口方法传入的参数在xml文件里接收不到。检查了xml文件的命名空间和方法名都没有错,方法名也没有重复,但就是报错参数找不到,后来上网查询及同事的帮助发现是#{}的使用错误导致的。
以前mapper接口方法如果是多个参数的情况,一般都包装成对象或用map来传入,由于对象属性、map的key都是唯一的,所以使用#{}没错。今天我是直接传入了两个String类型的参数,由于都是String类型的数据,再使用#{}来获取传入的参数就会找不到,报错.
最有解决的办法是利用@Param注解分别给两个String类型的参数起个名字,然后#{对应的名字}就能正确的获取传入的参数了。
如果参数只有一个就没有必要使用@Param注解。
注意:即使形参是多个不同类型的基本类型参数,如果要使用#{}来获取值,也必须使用@Param。