Mybatis Available parameters are [0, 1, param1, param2]解决方法

it2026-06-05  3

今天在做接口实现时,报了这个错误,也是很纳闷。

接口 int decreaseRedPacketByVersion(Integer id, Integer version); 1 实现SQL <update id="decreaseRedPacketByVersion"> update t_red_packet set stock = stock - 1, version = version + 1 where id = #{id} and version = #{version} </update> 123456789

结果运行的时候就报了上面的错误,调试发现传递的参数都是有值的,但是为什么会报这个错。 原来这与Mybatis的参数匹配机制有关,当传递多个参数的时候,映射机制并不清楚如何匹配到正确的参数。

解决办法

使用@Param参数 int decreaseRedPacketByVersion(@Param("id") Integer id, @Param("version") Integer version); 指定参数位置 <update id="decreaseRedPacketByVersion"> update t_red_packet set stock = stock - 1, version = version + 1 where id = #{0,jdbcType=INTEGER} and version = #{1,jdbcType=INTEGER} </update> 使用map方式传参 int decreaseRedPacketByVersion(Map<String, Object> map);
最新回复(0)