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過於放心的後果!
分享出來供大家多一個參考。