MyBatis 的 @Param 注解那些事
踩坑!一个关于 MyBatis 接口方法传入多个参数的问题…
马上接近春招,最近在做一个Java电商项目的后台开发,持久层用的 MyBatis 框架,由于跨越了春节,项目先是在家里电脑上开发,途中转移到自己的笔记本上开发。
关于 MyBatis 传入多个参数的问题,有这样一个方法:
1 | int updatePasswordByUsername(String username, String password); |
其 XML 实现:
1 | <update id="updatePasswordByUsername" parameterType="map"> |
这样子写,在家里电脑运行的时候不会报错,但今天在笔记本上重新测试这个接口的时候却报了一个这样的错误:
Parameter ‘userId’ not found. Available parameters are [1, 0, param1, param2]
起初我以为是哪里参数写错了,检查了好几遍也没查出个所以然,最后依然动用搜索引擎直接找到了解决方案:@Param
注解
只要将上述方法改写成这样就OK了:
1 | int updatePasswordByUsername(@Param("username") String username, @Param("password") String password); |
或者,如果不想写 @Param 注解,那把 XML 改成这样也行:
1 | <update id="updatePasswordByUsername" > |
0 和 1 代表方法参数位置的索引,如果按索引绑定的话,parameterType也没必要写了。
目前暂不清楚为啥家里的 MyBatis 不加注解也能正常运行,也许是版本问题?总之写下本博文记录一下踩坑=_=