mybatis報錯 Parameter 'user_id' not found. Available parameters are [list]

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過於放心的後果!

分享出來供大家多一個參考。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章