mybatis报错 org.apache.ibatis.binding.BindingException: Parameter 'user_id' not found. Available parameters are [list]
我是插入多条数据时使用了mybatis的foreach语句,然后在插入语句执行时报的错。
插入语句如下所示:
<insert id="InsertAccountList" parameterType="java.util.List">
insert into account
(user_id,bill_count)
values
<foreach collection="list" index="index" item="account" separator="," close=";">
(#{user_id},#{bill_count})
</foreach>
</insert>
网上很多回答都是说collection的值应该填list,或者在mapper.java中加上param注解以识别list。
但是我仔细检查了一下,我并没有这方面的问题。在尝试多次后,忽然想到是不是无法找到account中的user_id是不是因为他无法确定哪个值是user_id。
然后我给foreach里面的变量名都加上了account,代表他是account实体类下的类型。
<insert id="InsertAccountList" parameterType="java.util.List">
insert into account
(user_id,bill_count)
values
<foreach collection="list" index="index" item="account" separator="," close=";">
(#{account.user_id},#{account.bill_count})
</foreach>
</insert>
然后就成功解决了!
按照道理来说mybatis应该自己能识别account里面的内容,并且网上说到插入多条语句时,所写的insert表达式与我的基本一致。
这些原因综合起来,导致我找错误找了一个小时!太难想到了!对mybatis过于放心的后果!
分享出来供大家多一个参考。